PHP CLI Problem mit Verzeichnissen

Dukeatcoding

Mitglied
Ich haben ein PHP Skript, dass später per Cron und wegen der Laufzeit im besten Fall mit php-cli über die Shell aufgerufen werden soll.

Bei direktem Aufruf aus dem Verzeichnis:

xxx:/srv/www/vhosts/xxx/httpdocs/xmlimport # php5 checker.php5
<br>+++++++++++++++++++++++++++++++++++++<br>Checklock 51<br>Checkdir uploadtmp/usera, Ix.zip<br>Dateien vergleichen mit x.zip:<br>filename: .
filename: ..
<br>+++++++++++++++++++++++++++++++++++++<br>Checklock 26<br>Checkdir uploadtmp/user_2, Ix.zip<br>Dateien vergleichen mit Ix.zip:<br>filename: .
filename: ..

Gibts kein Problem, bei Aufruf aus / , was ja beim ausführen über Cron auch der Fall sein sollte habe ich den Problem , dass er auf Grund irgendwelcher Ordnerrechte trotz ausführenden Roots nicht klar kommt:

xxx:/ # php5 /srv/www/vhosts/xxx/httpdocs/xmlimport/checker.php5
<br>+++++++++++++++++++++++++++++++++++++<br>Checklock 51<br>Checkdir uploadtmp/usera, xxxx.zip<br>Dateien vergleichen mit xxx.zip:<br>Fehler uploadtmp/usera ist kein Verzeichnis!<br>+++++++++++++++++++++++++++++++++++++<br>Checklock 26<br>Checkdir uploadtmp/user_2, xxx.zip<br>Dateien vergleichen mit xxx.zip:<br>Fehler uploadtmp/user_2 ist kein Verzeichnis!

Insbesondere gibt es ein Problem mit der is_dir Funktion.

Jetzt muss ich entweder das Skript anpassen oder es irgendwie so hinbekommen, dass das Skript auch beim Aufruf über Cron aus dem xmlimport verzeichnis gestaret wird. Hat jemand eine Idee ?
 
Mit nem Mini Shell Skript gehts zum Beispiel:

PHP:
#!/bin/sh
cd /srv/www/vhosts/xxx/httpdocs/xmlimport
php5 checker.php5

Wenn jemand ne bessere Idee hat bin ich auch dankbar ;)
 
Das Problem ist, das wenn du das Script aus "/" aufrufst und du mit relativen Pfaden arbeitest, das checker.php5 Script das Verzeichnis "/uploadtmp/usera" (z.b.) versucht zu finden, wobei die Funktion is_dir() natürlich scheitert. Beim Aufruf des Scripts aus dem XMLImport Ordner geht es, weil du relativ zum Verzeichnis '/srv/www/vhosts/xxx/httpdocs/xmlimport' arbeitest.

Würdest du bei deinem Operationen mit den absoluten Pfaden arbeiten geht es.

Da du keinen Code gepostet hast, hier ein Pseudocode, wo vor jeder Datei/Ordnerangabe der Pfad zum XMLImport Ordner vorangestellt wird.

PHP:
$pathXMLImport = '/srv/www/vhosts/xxx/httpdocs/xmlimport/';
// oder evtl auch sowas wie
$pathXMLImport = dirname(__FILE__) . '/';
$userFolder = 'usera'; // oder woher diese Info auch immer herkommt
$filename = 'xxx.zip';  //             ''

echo is_dir($pathXMLImport . $userFolder . '/' . $filename) ? 'Datei gefunden' : 'Datei nicht gefunden';
 
Danke für die Antwort daran liegt es auf jeden FAll wenn ich es aus / aufrufe.

Gerade habe ich ein anderes Problem. Versuche das von mir oben gepostet sh Skript per Cron aufzufrufen. Laut log findet der Aufruf auch statt aber es muss nen Fehler geben.

Komischer Weise klappt der manuelle aufruf des sh Skriptes wunderbar

Cron:


*/1 * * * * root /root/bin/checker.sh >/dev/null 2>&1
 
Lass beim CronJob doch einfach mal die Umleitung in /dev/null weg. Dann sollte dir doch der Fehler beim aufruf durch den CronD im root Terminal oder in der /var/log/messages bzw /var/log/syslog Datei aufgezeigt werden.
 
Beziehungsweise gib ein logfile an, in das die Ausgaben geschrieben werden.

&> /var/log/meinLogfile.log

Dann musst Du nicht lange suchen :)
 
Zurück