cronjob には、php のexecを使用します。確かに、includeの方が優れている (または少なくとも単純である) 場合もありますが、同時にいくつかのことを開始する場合はそうではありません。
とにかく、私のウェブホスティング会社のサーバーには PHP 5.3 があり、すべて正常に動作します! ただし、PHP 5.2.7 を使用しているクライアント用のサーバーにはありません。このバージョンが問題かどうかはわかりませんが、その点は言及した方がよいと思います。
同じディレクトリに (たとえば) 2 つのファイルがあります: cronjob.phpとtest.phpです。最後のものは、webbrowser 経由でファイルを開始することにより、そのコンテンツを実行します。しかし、別のファイルで実行しようとすると、そうではありません。
cronjob.php:
<?php
exec('php test.php > /dev/null &');
?>
私のクライアント(私が使用しているものではない)のウェブホスティング業者は、phpへのフルパスを追加し、php45を追加するように私に言いました。そうしないと、「php 4で」実行されます。だから私はそれを次のように変更しました:
exec('/usr/local/bin/php54 absolutepath2file/test.php > /dev/null &');
...しかし、これはtest.phpを開始しません。
URLとしてではなくサーバーから直接cronjobを開始すると、すべてのランタイム環境が実行されるわけではありませんが、スクリプトはURLで直接ロードされます。そして、Web ブラウザーでファイルを開いた場合とまったく同じ結果になります。
奇妙なことに、ウェブホスティング業者は、cronjob.php が test.php を正しく開始することをメールで教えてくれましたが、実行されません。繰り返しますが、test.php は、手動で開始すると完全に機能します。
safe_mode (<- php 5.2.7) に問題があるのでしょうか? error_reporting(E_ALL); も追加します。可能性のあるすべてのエラーを取得しますが、問題はありません、とサーバーエラーログは述べています。
誰か?:-)