2012-04-04 24 views
1

Ich habe einen Cronjob aufrufen ein Shell-Skript. Innerhalb dieses Shell-Skript, und ich habe diese Zeilen:Cronjob läuft nicht php Dokument

php backup.php 
(cat db-backup.sql ; uuencode db-backup.sql db-backup.sql) | mailx -s 'Database Daily Backup' [email protected] 
rm -f db-backup.sql 

Wenn ich diesen Shell-Skript manuell ausführen, wie dieses ./backup es eine Backup-Datei der Datenbank erstellt, schickt mir eine E-Mail und löscht die Datei. Wenn cron dieses Skript aufruft, sendet es mir eine leere E-Mail und es ruft die php-Datei nicht richtig auf. Was könnte die Ursache für dieses Problem sein?

Hinweis: beide Shell-Skript und PHP-Datei hat -rwxr-xr-x Perms.

Antwort

3

cron ausgeführt wird wahrscheinlich nicht das Skript in einem Verzeichnis, in dem Ihr Benutzerkonto Schreibrechte hat. (Auf meinem System zeigt ls -l /proc/$(pidof cron)/cwd das aktuelle Arbeitsverzeichnis ist /var/spool/cron/.)

Setzen Sie eine explizite cd /path/to/writable/directory unmittelbar vor der php Linie.

+0

Ja, das war das Problem. Danke für Ihre Hilfe :) –

+1

Ausgezeichnet. Übersehen Sie [Alex 'Rat] nicht (http://stackoverflow.com/a/10008652/377270), es ist nur allzu oft die Ursache von 'Cron'-Problemen. :) – sarnold

2

Verwenden Sie vollständige Pfade beim Erstellen von Cron-Skripten. Zum Beispiel:

/usr/bin/php-cli backup.php