cronに対してのスクリプトのパスは正常に通っているものとします。
スクリプト内にやはり問題がありました。
スクリプトでファイルを読み取り、書き込みしているところに問題がありました。
そのファイルに対して、絶対パスが必要でした。
$filename=”a.txt”;とスクリプトの置いてあるディレクトリと同じであっても、
たとえば、
$filename=”/home/hogehoge/public_html/hoge/a.txt”;
のように指定する必要がありました。
cronから見て、どこにあるかということであり、
絶対パスにしてしまうのが、いいようです。
問題のファイルの更新日時を見ていて気づきました。
WEBから実行して問題なく動いていたので、安心していましたが、
cronは、cronでテストしないとダメですね。
エラーログをとる
「error_log」関数を使用すると、スクリプト内で発生したエラーをログファイルに出力することができます。使い方は次のようになります。
error_log($message, $message_type, $destination, $extra_headers);
- $message: 出力するメッセージ。文字列や数値などを指定できます。
- $message_type: 出力先を指定する定数。省略した場合は、0(エラーログ)が指定されます。
- $destination: 出力先を指定する文字列。省略した場合は、php.iniの「error_log」設定が使用されます。
- $extra_headers: 追加で送信するヘッダーを指定する文字列。省略した場合は、追加のヘッダーは送信されません。
以下に例を示します。
error_log('エラーが発生しました。');
上記の例では、「エラーが発生しました。」というメッセージを、php.iniの「error_log」設定で指定されたログファイルに出力します。
Copy codeerror_log('エラーが発生しました。', 1, '/var/log/php_errors.log');
上記の例では、「エラーが発生しました。」というメッセージを、「/var/log/php_errors.log」というファイルに出力します。
「error_log」関数を使用することで、スクリプト内で発生したエラーを簡単にログに出力することができます。ログを確認することで、問題を特定しやすくなるので、スクリプトをデバッグする際には有効です。