1

cronjob には、php のexecを使用します。確かに、includeの方が優れている (または少なくとも単純である) 場合もありますが、同時にいくつかのことを開始する場合はそうではありません。

とにかく、私のウェブホスティング会社のサーバーには PHP 5.3 があり、すべて正常に動作します! ただし、PHP 5.2.7 を使用しているクライアント用のサーバーにはありません。このバージョンが問題かどうかはわかりませんが、その点は言及した方がよいと思います。

同じディレクトリに (たとえば) 2 つのファイルがあります: cronjob.phptest.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); も追加します。可能性のあるすべてのエラーを取得しますが、問題はありません、とサーバーエラーログは述べています。

誰か?:-)

4

0 に答える 0