2012-04-04 60 views
1

我有一個調用shell腳本的cronjob。內部的shell腳本我有這些行:Cronjob沒有運行php文件

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 

當我手動運行該shell腳本這樣./backup它創建數據庫的備份文件,給我發來電子郵件,並刪除該文件。當cron調用這個腳本時,它給我一個空白的電子郵件,它不會正確調用/運行php文件。造成這個問題的原因是什麼?

注意:shell腳本和php文件都有-rwxr-xr-x perms。

回答

3

cron很可能無法在您的用戶帳戶具有寫權限的目錄執行腳本。 (在我的系統中,ls -l /proc/$(pidof cron)/cwd顯示當前工作目錄爲/var/spool/cron/。)

php行之前立即加上一個明確的cd /path/to/writable/directory

+0

是的,這是問題所在。感謝您的幫助:) – 2012-04-04 09:54:17

+1

優秀。不要忽視[亞歷克斯的建議](http://stackoverflow.com/a/10008652/377270),這往往是'cron'問題的原因。 :) – sarnold 2012-04-04 09:56:10

2

創建cron腳本時使用完整路徑。例如:

/usr/bin/php-cli backup.php