include_path + cronjob + plesk

pHoEnIx-sTyLe

Registered User
Hallo zusammen,

habe gerade folgendes Problem:
Ich nutze Plesk und habe das Zend Framework installiert. Um dies natürlich nutzen zu können muss der include_path gesetzt werden. Zusätzlich bei Plesk meistens auch open_basedir. Ist alles kein Problem gewesen. Alles eingestellt, getestet und funktioniert.
Wenn ich jedoch einen Cronjob starte fehlt das Zend Framework im include_path.

Code:
PHP Warning:  require_once(Zend/XmlRpc/Client.php): failed to open stream: No such file or directory in /srv/www/vhosts/host.de/httpdocs/test_request.php on line 2 PHP Fatal error:  require_once(): Failed opening required 'Zend/XmlRpc/Client.php' (include_path='.:.:/usr/share/php5:/usr/share/php5/PEAR') in /srv/www/vhosts/host.de/httpdocs/test_request.php on line 2

Gibt es eine globale Datei für den include_path?
Denn den include_path habe ich nur für die bestimmte domain eingerichtet. Das könnte vllt das Problem sein.
 
Gibt es eine globale Datei für den include_path?
/etc/php/php.ini (oder ähnlicher Pfad).

Denn den include_path habe ich nur für die bestimmte domain eingerichtet. Das könnte vllt das Problem sein.
Du hast die Einstellung vermutlich über eine .htaccess Datei oder die vhost.conf geändert. Beide Varianten sind Apache-spezifisch und werden von der CLI-Variante von PHP nicht ausgewertet.
 
Erstmal danke für die Antwort.

Das Zend Framework ist in der php.ini im include_path sowie im open_basedir eingetragen.
Wie du richtig gesagt hast ist der include_path ebenfalls in der httpd.conf eingetragen.

Aber es tritt wie gesagt das Problem auf.
 
Ok es war zwar in der php.ini vom Apache aber nicht die ini im cli Ordner.
Hab es nun geändert und steht auch im include_path, aber die Fehlermeldung wird weiterhin ausgespuckt.
 
Wo ist dein Zend Framework installiert? Welche Meldung kommt, wenn du das Skript von Hand mit dem CLI-Interpreter aufrufst?
 
/app/ZendFramework-1.0.2/library

Also wenn ich es über die Adressleiste aufrufe gibts keine Fehler. Läuft ohne Probleme. Nur beim Crontab eben.
Über den befehl in der Console gibts eben wie oben die Fehlermeldung dass es die Datei die ich im include einbinden will nicht gibt:

Code:
PHP Warning:  require_once(Zend/XmlRpc/Server.php): failed to open stream: No such file or directory in /srv/www/vhosts/host.de/httpdocs/test_class.php on line 2
PHP Fatal error:  require_once(): Failed opening required 'Zend/XmlRpc/Server.php' (include_path='.:.:/usr/share/php5:/usr/share/php5/PEAR:/app/ZendFramework-1.0.2/library') in /srv/www/vhosts/host.de/httpdocs/test_class.php on line 2

Kurz als Anmerkung:
"Zend/XmlRpc/Server.php" befindet sich in "/app/ZendFramework-1.0.2/library", deswegen ist "/app/ZendFramework-1.0.2/library" als include_path etc. eingebunden
 
Last edited by a moderator:
Doch eben schon. Weil ich es genau dort hin abgelegt habe.
Wie gesagt: Es funktioniert doch auch ohne Cronjob. Und dort ist überall genau der Pfad eingebunden und da gibts keine Probleme.
 
Hat irgend jemand noch ne Idee die zur Lösung meines Problems beisteuern kann?
Wie?
Es ist doch offensichtlich!
Entweder gibt es die Datei nicht, oder/und der includepfad ist falsch.
Aber da ich nicht vor deinem Monitor sitze.........

Übrigens:
Warum findet sich 2 mal . in deinem includepath?
 
Last edited by a moderator:
Wie?
Es ist doch offensichtlich!
Entweder gibt es die Datei nicht, oder/und der includepfad ist falsch.
Aber da ich nicht vor deinem Monitor sitze.........

Vielen Dank für deine hochqualifizierte Aussage!
Ich glaube eher du hast nicht richtig gelesen. Wenn der Pfad eingetragen ist und ohne Cronjob funktioniert, dann ist der Pfad wohl richtig. Das ist das einzige was hier offensichtlich ist.
 
lol. Genau deswegen wirst du nicht meine favourisierte Ansprechperson wenn ich eine Frage habe.
Also lassen wir das gespamme bitte.

Irgendwelche Ansätze woran es noch liegen könnte?
 
Du kannst dir leider nicht aussuchen, was ich Antworte. Und wenn dir meine Antworten nicht in den Kram passen finde ich das schade. Kann aber auch nichts daran ändern.

Aber es gibt ja auch zum Glück objektive Methoden um festzustellen, wer neben der Spur läuft ;)

Versuch es doch mal mit diesem Testscriptchen:
PHP:
if(file_exists('/app/ZendFramework-1.0.2/library/Zend/XmlRpc/Server.php'))
{
  echo 'pHoEnIx-sTyLe hat wieder Erwarten doch recht!';
}else
{
  echo 'combie hat wie immer recht!';
}

------
Hast Du vielleicht mehrere PHP-Interpreter installiert?
Wenn die Meldungen wirklich so kommen, ist der Fehler eindeutig! PHP kommt nicht an die Datei. Da ist es auch völlig wurscht welche Version/SAPI verwendet wird.
evtl. ist ja wirklich die Doppelte vergabe von . Schuld. Das habe ich noch nie getestet.
 
Last edited by a moderator:
Hast Du vielleicht mehrere PHP-Interpreter installiert?

Nein.

Du kannst dir leider nicht aussuchen, was ich Antworte. Und wenn dir meine Antworten nicht in den Kram passen finde ich das schade. Kann aber auch nichts daran ändern.

Ich will mir deine Antwort auch nicht aussuchen, sonst wäre die Frage überflüssig, aber einen sinnvollen Beitrag erwarte ich. Wenn du diesen nicht beitragen möchtest dann ist das deine Sache, aber das ist für mich dann Spam.

Und zu deinem "Testscriptchen". Ich programmier PHP nicht erst seit gestern. Der Ordner ist vorhanden und genau das bestätigt mir die Ausgabe deines Scriptes wenn ich das ganze per Adressleiste eingebe. Per Cron oder über die Console findet er die Datei eben nicht. Also hättest du im Falles des Crons bzw. der Ausgabe in der Console Recht. Jedoch behalte ich das Recht dass es den Ordner gibt. Ebenso muss der include_path richtig gesetzt sein, sonst würde im Falle eines aufrufes durch den Browser ja auch ein Fehler auftreten.

Was mich viel mehr schon die ganze Zeit interessiert: Warum?
Der Ordner sowieo alle Dateien sind vorhanden, aber warum wird es trotz richtig gesetztem include_path nich gefunden?
 
Last edited by a moderator:
Also hättest du im Falles des Crons bzw. der Ausgabe in der Console Recht.
Danke!

Jedoch behalte ich das Recht dass es den Ordner gibt.
Wenn der so heißen würde, wie du es vermutest, würde PHP die Datei finden.
Findet PHP die Datei? Nein!
Also gibt es sie nicht an diesem Ort!

Zb. dann:
Die beiden Umgebungen unterscheiden sich!
Wo können sie sich so unterscheiden, dass DIESE Wirkung zum tragen kommt?
Klare Antwort: Unterschiedliche root Verzeichnisse :)
Also wird mindestens einer der Beiden in einer "chroot" Umgebung laufen.

Daraus ergibt sich:
Der includepath ist in der CLI Version von dir falsch gesetzt worden!
:D Noch Wiederworte? :D
 
Last edited by a moderator:
Wenn der so heißen würde, wie du es vermutest, würde PHP die Datei finden.
Findet PHP die Datei? Nein!
Also gibt es sie nicht an diesem Ort!

Natürlich findet PHP die Datei, aber nicht über die Console.
Die Datei ist genau an diesem Ort und das ist auf jeden Fall Tatsache. Wenn PHP die Datei über einen normalen Aufruf über den Browser erkennt dann ist die Datei auch vorhanden. Da kannst du sagen was du willst. PHP hat die Datei gefunden, und somit existiert die Datei genau in diesem Pfad.
Somit ist der include_path der php.ini des Apaches richtig.

Daraus ergibt sich:
Der includepath ist in der CLI Version von dir falsch gesetzt worden!

Komisch dann erklär mir mal bitte warum der include_path in der cli version exakt genauso aussieht wie in der php.ini des apaches?
Erklärungen? ...Ich höre nichts. Gut, dass ich falsch liegen muss.
Vor allem wenn man eben genau den Pfad kopiert hat aus der php.ini des apaches (welche wohl offensichtlich funktioniert).
 
Erklärungen? ...Ich höre nichts.
Die, zumindest die Wahrscheinlichste, hast du von mir bekommen. Aber wohl schon zu Bockig um sie wahrnehmen zu können. So und jetzt, wo ich weiß wo der Fehler bei dir steckt, ist das Thema auch uninteressant für mich.
Wäre nett, wenn du noch posten würdest, ob es wirklich daran gelegen hat.

Übrigens:
Es kommt schon mal vor, dass die CLI und die CGI Version die selbe php.ini benutzen.
:D Ändert aber nix daran, dass der Pfad für die CLI Version falsch ist. :D
 
Last edited by a moderator:
Back
Top