Class 'Singleton' not found in...

Alle Fragen zur Installation und zu den erhältlichen Versionen sind hier an der richtigen Adresse. // All questions on installing the APF.
Antworten
teichlaender
Beiträge: 4
Registriert: 15.02.2008, 17:51:15

Class 'Singleton' not found in...

Beitrag von teichlaender » 15.02.2008, 18:09:04

Hallo,

ich möchte gern das Adventure-Framework ausprobieren, scheitere aber bei der Erstinstallation.
Folgendes wurde gemacht:
-Download des demopacks
-Entpacken in ein Verzeichnis

System:
- Windows XP
- IIS 5.1
- PHP 5.1.1

Einstellungen
- Frameworkverzeichnis ist Root des Webservers
- EIntrag in Hosts-Datei mit 127.0.0.1

Danach habe ich erwartungsvoll die Seite aufgerufen ... aber es kommt nur folgende Meldung:
Fatal error: Class 'Singleton' not found in D:\web\framework\apps\core\pagecontroller\pagecontroller.php5 on line 288

Wenn ich in die Datei pagecontroller.php5 auf Zeile 288 schaue, steht dort
var $__ObjectID;

Was ist noch zu tun, um das System zum Laufen zu bekommen?

Gruß Gerd

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: Class 'Singleton' not found in...

Beitrag von dr.e. » 15.02.2008, 22:45:51

Hallo Gerd,

die Fehlermeldung kommt mir auch etwas komisch vor. Ich vermute, dass dir PHP entweder etwas verschweigt oder wir hier in einen Bug laufen. Möglichkeit 1 können wir dadurch ausschließen, dass du ein

Code: Alles auswählen

error_reporting(E_ALL);
ini_set('display_error','1');
am Anfang der index.php einfügst und die exakte(n) Fehlermeldung(en) hier postest. Möglichkeit 2 können wir dadurch ausschließen, dass du dir die aktuellste PHP-Version installierst. PHP 5.1.x ist dafür bekannt, dass include(), include_once(), require() und require_once() innerhalb einer Funktion (hier import()) nicht korrekt ausgeführt und daher die entsprechenden Klassen nicht in den korrekten Gültigkeitsbereich eingebunden werden. Soweit ich das noch von den Tests im Kopf habe, wurde dieser Fehler in 5.2.0 behoben (http://bugs.php.net/bug.php?id=39542).

Sollte beides nicht helfen, kann ich dir ein XAMPP-Package mit der aktuellen Webseite erstellen, mit dem du entwickeln kannst.
Viele Grüße,
Christian

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: Class 'Singleton' not found in...

Beitrag von dr.e. » 17.02.2008, 23:38:10

Hallo Gerd,

konntest du mit den Angaben das Framework erfolgreich installieren? Solltest du noch Fragen haben, melde dich einfach nochmal.
Viele Grüße,
Christian

teichlaender
Beiträge: 4
Registriert: 15.02.2008, 17:51:15

Re: Class 'Singleton' not found in...

Beitrag von teichlaender » 18.02.2008, 10:17:43

Hallo Christian,
das o.g. Problem liegt tatsächlich an der PHP-Version 5.1.x, nach Installation der Version 5.2 ist dieses Problem behoben. Allerdings läuft unter PHP 5.2 die mySQL-Unterstützung anders, so dass ich auf diesem PC auf 5.1 zurückgewechselt habe.

Jetzt bin ich an einem anderem PC, auf dem das XAMPP mit der PHP Version 5.2.4 läuft.

-------------------------------------------------------
Problem
Ich habe einen VHOST für ADV angelegt:

Code: Alles auswählen

<VirtualHost adv:80>
       DocumentRoot G:\web\diverses\adventure
       ServerName adv

       <Directory "G:\web\diverses\adventure">
          AllowOverride All
       </Directory>

#       ErrorLog logs/adventuretest.de/error.log
#       CustomLog logs/adventuretest.de/access.log common
</VirtualHost>
Jetzt habe ich auf dem Webserver natürlich auch Seiten unter localhost liegen. Diese Seiten sind jetzt nicht mehr aufrufbar, d.h.

localhost ist gleich adv

Es ist also kein virtueller Server entstanden, sondern mein ganzer Server wurde umgeleitet. Wie kann ich das ADV nur so "nebenbei" testen ohne das ganze alte System zu verlieren?

-------------------------------------------------------

Nach der Installation und ein wenig Studium der Doku bleibt jetzt eine generelle Frage:
Ich habe viele Projekte, die auf normalen gehosteten Accounts laufen, auf denen ich nicht in der Apache/PHP-Konfig und in der HOST-Datei rumschreiben kann. Die Dateien müssen hochgeladen werden und das System muss laufen. Läuft das System wirklich nur in Root-Servern?


Viele Grüße Gerd

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: Class 'Singleton' not found in...

Beitrag von dr.e. » 18.02.2008, 21:43:54

Hallo Gerd,
das o.g. Problem liegt tatsächlich an der PHP-Version 5.1.x, nach Installation der Version 5.2 ist dieses Problem behoben. Allerdings läuft unter PHP 5.2 die mySQL-Unterstützung anders, so dass ich auf diesem PC auf 5.1 zurückgewechselt habe.
OK, dann ist dieser Fehler erkannt. Was die MySQL-Unterstützung angeht, so kann mach auch in 5.2 mit der "alten" MySQL-Erweiterung arbeiten, muss diese nur im extensions-Ordner und in der php.ini hinzufügen. Meine lokale Entwicklungsumgebung auf PHP 5.x arbeitet mit den mysql_* und den mysqli_* Funktionen.
Jetzt habe ich auf dem Webserver natürlich auch Seiten unter localhost liegen. Diese Seiten sind jetzt nicht mehr aufrufbar, d.h.

localhost ist gleich adv

Es ist also kein virtueller Server entstanden, sondern mein ganzer Server wurde umgeleitet. Wie kann ich das ADV nur so "nebenbei" testen ohne das ganze alte System zu verlieren?
Um das zu erreichen muss der Apache mit der Direktive

Code: Alles auswählen

NameVirtualHosts *:80
konfiguriert sein. Du kannst dann beliebige VHOSTs definieren und diese parallel betreiben. Weitere Voraussetzung ist, dass die Hostnamen in der C:\Windows\System32\drivers\etc\hosts eingetragen sind, da sonst kann der Browser den Server nicht kontaktieren kann. Um den bisherigen DOCUMENT_ROOT per localhost erreichen zu können musst du auch hierfür einen VHOSTs konfigurieren.

Um das nachvollziehen zu können habe ich mir den XAMPP 1.6.6 heruntergeladen. Dort ist die o.g. Direktive in der Datei /xampp/apache/conf/extra/httpd-vhosts.conf tatsächlich auskommentiert:

Code: Alles auswählen

#
# Use name-based virtual hosting.
#
##NameVirtualHost *:80
Einfach die einkommentieren, die genannten VHOSTs anlegen und den Apache neu starten sollte das Problem beheben.
Nach der Installation und ein wenig Studium der Doku bleibt jetzt eine generelle Frage:
Ich habe viele Projekte, die auf normalen gehosteten Accounts laufen, auf denen ich nicht in der Apache/PHP-Konfig und in der HOST-Datei rumschreiben kann. Die Dateien müssen hochgeladen werden und das System muss laufen. Läuft das System wirklich nur in Root-Servern?
Nein, das Adventure-PHP-Framework kannst du auf jedem mir bekannten Hosting-Account einsetzen. Den Eingriff in die Konfiguration, den du jetzt betreibst, erledigt dabei bereits dein Hoster für dich: Shared-Hosting-Accounts werden i.d.R. per VHOST konfiguriert. Der einzige Eingriff in die Konfiguration ist eine .htaccess-Datei (siehe adventure-demopack-* Datei), die du mit ausliefern kannst um das URL-Rewriting-Feature nutzen zu können. Akzeptiert dein Hoster keine .htaccess-Dateien, in denen RewriteRules definiert sind, kannst du diese auch weg lassen und deine Anwendung einfach im normalen URL-Layout-Modus erstellen. Tools wie linkHandler und frontcontrollerLinkHandler unterstützen beide Modi.

Solltest du hier weitere Anregungen oder Tipps zur Implementierung benötigen, meld dich einfach.
Viele Grüße,
Christian

teichlaender
Beiträge: 4
Registriert: 15.02.2008, 17:51:15

Re: Class 'Singleton' not found in...

Beitrag von teichlaender » 19.02.2008, 11:50:32

Hallo Christian,

die Installation läuft jetzt. Auch URL-Rewriting habe ich ein- und ausgeschalten. Das klappt.
Nein, das Adventure-PHP-Framework kannst du auf jedem mir bekannten Hosting-Account einsetzen. Den Eingriff in die Konfiguration, den du jetzt betreibst, erledigt dabei bereits dein Hoster für dich: Shared-Hosting-Accounts werden i.d.R. per VHOST konfiguriert....
Es ist schon klar, dass es auf Hosting-Accounts der Form http://www.IhrWunschName.de funktioniert. Ich habe aber auch Projekte, die auf Servern laufen, die keinen eigenen Domainnamen für jedes Teilweb haben (z.B. an Hochschulen). Da geht das über Verzeichnisse im Rootordner in der Form
____http://www.MeinName.de/projekt1
____http://www.MeinName.de/projekt2
usw. Mein Projekt liegt dann im Ordner projekt1 und ich habe auch nur Zugriff (ftp) auf diesen Ordner.

Wenn ich das Prinzip jetzt richtig verstanden habe, läuft das Framework auf solchen Servern nicht, weil die index.php immer in http://www.MeinName.de erwartet wird.

Gibt es auch dafür eine Lösung oder ist das Ganze sogar ein generelles Poblem solcher Frameworks?

Viele Grüße
Gerd

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: Class 'Singleton' not found in...

Beitrag von dr.e. » 19.02.2008, 13:10:34

Hallo Gerd,
Wenn ich das Prinzip jetzt richtig verstanden habe, läuft das Framework auf solchen Servern nicht, weil die index.php immer in http://www.MeinName.de erwartet wird.

Gibt es auch dafür eine Lösung oder ist das Ganze sogar ein generelles Poblem solcher Frameworks?
Ich glaube, da haben wir uns missverstanden. Auch auf derartigen Accounts läuft das Framework. Einziger Nachteil ist dabei, dass man das URL-Rewriting-Feature nicht nutzen kann. An sich kannst du aber deine Dateien ganz bequem in den gewünschten Ordner hochladen und deine Applikation per

Code: Alles auswählen

http://www.MeinName.de/projekt1
aufrufen. Auch hier fungiert die index.php als zentrale Bootstrap-Datei und Unterseiten sind weiterhin per

Code: Alles auswählen

http://www.MeinName.de/projekt1/?Seite=Startseite

aufrufbar. Wie bereits weiter oben geschrieben, unterstützt das Framework beide Arten von Betrieb: mit und ohne URL-Rewriting. Du musst einzig und allein deine Templates so bauen, dass die relevanten Daten (CSS-Dateien, Bilder, ...) via HTTP sauber erreicht werden. Ein Beispiel für eine Applikation ohne URL-Rewriting ist http://www.easyflock.de/. Mit http://www.easyflock.de/?Seite=Startsei ... eport=true erkennst du, dass es mit dem APF implementiert ist.

Das Demopackage hat den Nachteil, dass die Templates nur für den URL-Rewriting-Betrieb ausgelegt sind und daher ohne URL-Rewriting die Seite zwar funktioniert, aber die Bilder nicht korrekt angezeigt werden. Hier muss man die Templates an einigen Stellen anpassen und dann klappt auch das. Entwickelst du jedoch eine Webseite oder eine Applikation neu, kennst du die Parameter (=kann man URL-Rewriting einsetzen, oder nicht) und du kannst dann darauf entsprechend reagieren.

Ich hoffe das beantwortet deine Fragen.
Viele Grüße,
Christian

teichlaender
Beiträge: 4
Registriert: 15.02.2008, 17:51:15

Re: Class 'Singleton' not found in...

Beitrag von teichlaender » 20.02.2008, 09:15:36

Hallo Christian,

das funktioniert jetzt wie beschrieben. Einfach URL-Rewriting abschalten und die Links stimmen.
Damit sollte jetzt die Installation abgeschlossen sein.

Vielen Dank erstmal.
Gerd

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast