2016-04-01 11 views
2

rename() läuft gut von der Befehlszeile, aber wenn von Cron-Job ausgeführt wird, die Umbenennung() nicht. Da die connect.php-Datei funktioniert, nehme ich an, dass der Cron-Job im richtigen Verzeichnis ist, kann aber nicht herausfinden, warum rename() nicht funktioniert. Ich habe versucht, absolute Pfade und sie hat nicht funktioniert:Umbenennen() funktioniert nicht in Cron Job

<?php 
include 'connect.php'; 

$oldlocation='xxx/xxx/'.$oldfilename; 
$newlocation='yyyy/xxx/'.$newfilename; 
$move=rename("$oldlocation","$newlocation"); 

Der Cron-Job: * * * * */usr/bin/php /usr/xxx/xxx/xxx/xxx.php -q -f

Ich habe keinen Root-Zugriff auf den Server. Soll dies ein SHELL-Skript durchlaufen?

+1

Es scheint, als ob deine '$ oldlocation' und' $ newlocation' als relative Pfade angegeben sind. Cron führt Ihr Skript wahrscheinlich von einem anderen Ort aus, versuchen Sie, es absolut zu machen. – jojonas

+1

Sind Sie sicher, dass Sie Ihre absoluten Pfade korrekt eingerichtet haben? Cron wird definitiv nicht mit relativen Pfaden arbeiten, aber Sie müssen sicherstellen, dass Ihr absoluter Pfad von root definiert ist - etwas wie 'include '/home/youraccount/public_html/includes/connect.php';' –

+0

die Datei connect.php funktioniert genau wie gezeigt und ich bin mir nicht sicher warum, aber die Umbenennung() benötigt absolute Pfade, ich habe die/am Anfang des Pfades fehlt, nicht für PHP in einem Browser oder Befehlszeile benötigt, aber ich denke, aber absolut erforderlich ist Wege, ich vermute wieder, aber werde forschen. Danke für die Antworten – jester

Antwort

2

Der aktuelle Pfad während einer cron Ausführung ist das home Verzeichnis des Benutzers, der den cron Prozess ausführt. Siehe auch diese post.

Ändern Sie einfach den relativen Pfad zu einem absoluten und das Problem ist behoben.

0

Die Lösung, nicht direkt ein Verzeichnisproblem (gut Art von): $ oldlocation = 'xxx/xxx /'.$ oldfilename; muss geändert werden in: $ oldlocation = '/ xxx/xxx /'.$ oldfilename; Ich schätze, ich vermisste die erste/

+0

Dies ist der absolute Pfad als 'Jojonas',' Sean Cunningham' und 'I' erwähnt. Das erste '/' ist das Zeichen, das das System anweist, einen absoluten Pfad zu verwenden. –

+0

Ja und danke. Aus irgendeinem Grund konnte ich nirgendwo anders finden, dass ein absoluter Pfad mit einem beginnen muss, den ich viele Stunden lang versucht habe herauszufinden. In der ursprünglichen Frage erwähnte ich, dass ich absolute Pfade ausprobiert hatte, also wusste ich, dass ich sie brauchte, aber dann im Code zeigte ich falsche Pfadformatierung, die ich nicht für das Leben von mir herausfinden konnte. Danke für die Antworten. – jester

+0

Wäre nett, wenn Sie meine Antwort akzeptieren, da es Ihr Problem gelöst hat. Danke –