1

シェル スクリプトを呼び出す cronjob があります。そのシェル スクリプト内には、次の行があります。

php backup.php
(cat db-backup.sql ; uuencode db-backup.sql db-backup.sql) | mailx -s 'Database Daily Backup' mail@mail.com
rm -f db-backup.sql

この ./backup のようにこのシェル スクリプトを手動で実行すると、データベースのバックアップ ファイルが作成され、メールが送信され、ファイルが削除されます。cron がこのスクリプトを呼び出すと、空白の電子メールが送信され、php ファイルを適切に呼び出し/実行しません。この問題の原因は何ですか?

注: シェル スクリプトと php ファイルの両方に -rwxr-xr-x perms があります。

4

2 に答える 2

3

cronユーザー アカウントに書き込み権限があるディレクトリでスクリプトを実行していない可能性があります。(私のシステムでls -l /proc/$(pidof cron)/cwdは、現在の作業ディレクトリがであることを示してい/var/spool/cron/ます。)

cd /path/to/writable/directory行の直前に明示的に置きphpます。

于 2012-04-04T09:43:36.053 に答える
2

cron スクリプトを作成するときは、絶対パスを使用してください。例えば:

/usr/bin/php-cli backup.php
于 2012-04-04T09:43:18.067 に答える