- ベストアンサー
cronでPHP実行
お世話になります。 OSはクライアントの為、恐縮ながら何を使用しているか不明となっております。 PHPバージョンは5.1.6です。 cronを使用して、毎日特定の時間に、メールを配信するPHPスクリプトを実行しようと試みているのですが、エラーメールが返ってきてしまいます。 因みに、URLを直接指定して実行した場合は正常にメールが配信されます。 設定方法は、crontab -e で 0 12 * * * /usr/lib/php -q /home/hoge/public_html/mail.php と記述しております。 返ってくるエラーメールの内容は、以下の通りです。 Content-Type: text/plain; charset=UTF-8 Auto-Submitted: auto-generated X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <HOME=/home/hoge> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=hoge> X-Cron-Env: <USER=hoge> Message-Id: <xxxxxx@xxxxxxxxxx> Date: Sun, 28 Sep 2008 12:00:01 +0900 (JST) /bin/sh: /home/hoge/public_html/mail.php: Permission denied 以上、対策方法についてご存知の方がおられましたら、ご教授よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
0 12 * * * /usr/lib/php -q /home/hoge/public_html/mail.php と書いて、 /bin/sh: /home/hoge/public_html/mail.php: Permission denied というエラーメッセージは出ません。 これは、 0 12 * * * /home/hoge/public_html/mail.php と書いたときのエラーメッセージじゃないですか? php本体のパスを確認して、 0 12 * * * phpのパス -q /home/hoge/public_html/mail.php と書くのがいいです。
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
>URLを直接指定して実行した場合は正常にメールが配信されます。 じゃ、wgetでURLを指定すればよいでしょう 場合にもよりますがspiderモードでもいけることもあります
お礼
ご回答ありがとうございます。 wgetでURLを直接指定して試してみたところ、 failed: No route to host. とエラーメールが返ってきてしまいました。
- localica
- ベストアンサー率52% (202/385)
こんにちは エラーメッセージから見ると権限が足りないようですね。 スクリプトのパーミッションを確認しては如何でしょうか。
お礼
ご回答ありがとうございます。 パーミッションを確認してみると500となっていて、実行権限が無かったため755に変更致しました。
お礼
ご回答ありがとうございます。 無事、解決致しました。 phpのパスは /usr/lib/php ではなく /usr/bin/php となっておりました。 早速、 0 12 * * * /usr/bin/php -q /home/hoge/public_html/mail.php と指定し直しましたところ、正常にメールが配信されました。