2012-04-04 4 views
1

У меня есть cronjob, вызывающий сценарий оболочки. Внутри этого сценария оболочки и у меня есть такие строки:Cronjob не работает php document

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 

Когда я запускаю этот скрипт вручную, как это ./backup создает резервную копию файла базы данных, посылает мне по электронной почте и удаляет файл. Когда cron вызывает этот скрипт, он отправляет мне пустое электронное письмо и не вызывает/запускает php-файл должным образом. Что может быть причиной этой проблемы?

Примечание: оба сценария оболочки и php-файла имеют -rwxr-xr-x perms.

ответ

3

cron, вероятно, не выполняет скрипт в каталог, в котором ваша учетная запись имеет разрешения на запись. (На моей системе, ls -l /proc/$(pidof cron)/cwd показывает текущий рабочий каталог /var/spool/cron/.)

Поместите явный cd /path/to/writable/directory непосредственно перед php линии.

+0

Да, это была проблема. Спасибо за вашу помощь :) –

+1

Отлично. Не забывайте [совет Алекса] (http://stackoverflow.com/a/10008652/377270), это слишком часто является причиной проблем cron. :) – sarnold

2

Используйте полные пути при создании сценариев cron. Например:

/usr/bin/php-cli backup.php 
Смежные вопросы