2

Linode でホストされている php ファイルを crontab で実行しようとしています。

これが私がこれまでに行ったことです。

に行を追加しました:

/etc/crontab ('crontab -e' is used too)

そして、このファイルを2分ごとに実行したいと思います。

*/2 * * * * /usr/bin/php /srv/www/path/to/my/php/file.php

テスト用のphpファイルのコードは次のとおりです

// Set error reporting
error_reporting(-1);
ini_set('display_errors', 'On');
ini_set('html_errors', 'On');
ini_set('allow_url_fopen', 'On');

$fh = fopen('gallery.xml', 'w+');
fwrite($fh, $_SERVER['REQUEST_TIME']);
fclose($fh);

php ファイルと xml ファイルの両方に 777 パーミッションがあります。php ファイルをブラウザで直接開くと、xml ファイルに変数が記録されます。しかし、crontab を使用しても何も起こりません。それは私にはうまくいかなかったようです。

Linode と debian 6 を使用しています。

私は何か間違ったことをしていますか?いくつかの提案をしてください。ありがとう。

ブライアント

4

1 に答える 1

2

fopen()cronのデフォルトの作業ディレクトリは、ジョブが実行されているアカウントのホームディレクトリであるため、作業ディレクトリを正しく設定するか、絶対パスを使用する必要がある場合~/rootあり~/yourusernameます。これを試すことができます:

*/2 * * * * ( cd /srv/www/path/to/my/php/ ; /usr/bin/php -q file.php )

またはこれ:

*/2 * * * * cd /srv/www/path/to/my/php/ && /usr/bin/php -q file.php

違いは、失敗した場合に2番目のものはPHPを起動しないことです。これは、失敗した場合に起動する必要がないcd場合に完全に必要なものです。cdfile.php

実行可能ビット (つまりchmod a+x file.php) を設定し、これをスクリプトの最初の行として追加することもできます。

# /usr/bin/php -q

そのため、スクリプトを他のアプリまたはスクリプト (つまり ) として呼び出すことができます./file.php。次に、crontab エントリは次のようになります。

*/2 * * * * cd /srv/www/path/to/my/php/ && ./file.php

また、暗号化された「-1」を使用しないでくださいerror_reporting()。それは何も言いません。E_ALLまたは、有効な設定で終了し、-1 よりも自明な何かを使用します。

于 2012-09-11T17:05:42.120 に答える