rename() Problem - No such file or directory

Hallo,

ich habe ein Problem beim Umbenennen von Dateien mittels PHP, das mich zur Verzweiflung treibt. Egal, ob mit relativen Pfaden, mit absoluten Pfaden, mit der PHP-internen Funktion oder per Linux-Systembefehl ... er macht es einfach nicht. Es handelt sich nicht um ein Rechteproblem, er meckert einfach nur, dass er angeblich nix finden würde ...

Aufruf:
PHP:
sysCmd("mv ".$itemToRename." ".$replacingItem);
Rückgabe:
PHP:
itemToRename:cron2.php
replacingItem:cron1.php
itemToRename (mit Pfad):/var/www/autoBuild/cron2.php
replacingItem (mit Pfad):/var/www/autoBuild/cron1.php
Akt. Verzeichnis:/var/www/autoBuild
array(3) { ["lastLine"]=> string(24) "sh: cron1.php: not found" ["result"]=> array(1) { [0]=> string(24) "sh: cron1.php: not found" } ["retCode"]=> int(127) }

Aufruf:
PHP:
rename($itemToRename, $replacingItem);
Rückgabe:
PHP:
itemToRename:cron2.php
replacingItem:cron1.php
itemToRename (mit Pfad):/var/www/autoBuild/cron2.php
replacingItem (mit Pfad):/var/www/autoBuild/cron1.php
Akt. Verzeichnis:/var/www/autoBuild
Warning: rename(cron2.php ,cron1.php) [function.rename]: No such file or directory 
bool(false)

Aufruf:
PHP:
rename(W3PATH.WEBPATH.$itemToRename, W3PATH.WEBPATH.$replacingItem);
Rückgabe:
PHP:
itemToRename:cron3.php
replacingItem:cron2.php
itemToRename (mit Pfad):/var/www/autoBuild/cron3.php
replacingItem (mit Pfad):/var/www/autoBuild/cron2.php
Akt. Verzeichnis:/var/www/autoBuild
Warning: rename(/var/www/autoBuild/cron3.php ,/var/www/autoBuild/cron2.php) [function.rename]: No such file or directory in /var/www/autoBuild/include/class.ScheduleBuild.php on line 524
bool(false)

Die letzte Zeile ist jeweils ein Vardump des Rückgabewerts des Aufrufes. Ich hab auch schon versucht, die Datei zu kopieren und danach die Ursprungsdatei zu löschen ... selbes Problem. Und die Dateien liegen auch im Verzeichnis autoBuild ;)

Jemand eine Idee?
 
Hi,

es könnte sein, dass der Webserver in einem chroot läuft, das heißt die Pfade sind anders.
Schau mal, ob du mit einem "pwd" herausfindest, wo dein Server eigentlich sein Root hat.

Gruß
BK
 
Zuletzt bearbeitet:
Das Rootverzeichnis des Webservers ist mein Benutzerverzeichnis, das sollte allerdings nicht das Problem sein, denn:

- ich lege Dateien in /var/www/autoBuild an und die sind dann auch dort
- ich lösche Dateien aus diesem Verzeichnis und das funktioniert auch (per Systembefehl)

Umbenennen geht nicht, kopieren geht auch nicht, weder PHP Funktion, noch Systembefehl...

Das mit chroot halte ich für unwahrscheinlich, da das ja sicher keine Standardoption ist und ich der einzige bin, der an diesen System entwickelt.
 
Lösung des Rätsel:

Anwenden der Methode "trim" auf die Variablen "$itemToRename" und "$replacingItem", dort waren irgendwelche unsichtbaren Zeichen drinne, die wohl den Pfad kaputt gemacht haben. Muss man auch erst mal drauf kommen ...

Thx an alle, die sich den Kopf zerbrochen haben :)
 
Zurück