- 締切済み
CORESERVERでCRONジョブが実行されない
この手の情報はネット上に沢山あるので自分なりに調べたのですが解決に至りませんでしたので質問させてください。 やりたいことは、CORESERVERのCRONジョブで設定した時間にcron.shを動かしてtest.phpを実行したいです。 ■現状 ・CRONジョブは毎日午前11時に動作するように設定 0 11 * * * ・CORESERVERからCRONジョブのエラーや成功メールが1通も届かない ・Tera Term で直接CRONを実行したが500エラーが返ってくる ・シェルスクリプトで動かしたいPHPファイルに問題はなかった(直接実行して成功) ■やったこと cron.shをCORESERVERのトップディレクトリに設置 /virtual/ユーザー名/cron.sh cron.shに記述した内容は #!/bin/sh #PHP /usr/local/bin/php /virtual/ユーザー名/public_html/サイトディレクトリ/php/test.php exit です。cron.shのパーミッションは705にしました。改行コードはLFです。 test.phpまでのディレクトリのパーミッションも705になっています。test.phpのパーミッションは644です。 Tera Term に入力したコマンド? sh /virtual/ユーザー名/cron.sh 上記を決定すると以下のスターテスが返ってきました。 Status: 500 Internal Server Error Content-type: text/html 何か根本的な間違いをしているのでしょうか? アドバイスをお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- t_ohta
- ベストアンサー率38% (5238/13705)
> 結果は500エラーが返ってきました…。 ならば、test.phpはコマンドラインから実行した時に500番エラーを返すようプログラムされているのです。 原因を調べてエラーが出ないようプログラムを修正しましょう。
- t_ohta
- ベストアンサー率38% (5238/13705)
> ブラウザでURLを直接入力して動作したのでOKだと思っていました… ブラウザでアクセスした時と、コマンドラインで実行した場合は環境変数など実行環境が全く異なります。 コマンドラインで /use/local/bin/php /virtual/ユーザー名/public_html/サイトディレクトリ/php/test.php を実行してみましょう。
補足
冒頭の use を usr に変更してやってみました。 結果は500エラーが返ってきました…。
- t_ohta
- ベストアンサー率38% (5238/13705)
>シェルスクリプトで動かしたいPHPファイルに問題はなかった(直接実行して成功) これはどうやって確認しましたか?
補足
ブラウザでURLを直接入力して動作したのでOKだと思っていました…。 例 http://ドメイン/php/test.php
お礼
エラーの原因がわかりました。 test.phpのarrayの短縮構文でエラーが返ってきていました。ですがPHP設定で5.4以上にしてあったし、.htaccessでCGI版PHP5.4以上にしても結果は変わらず…なので諦めて短縮構文をやめました。 とりあえず動作しましたのでご報告まで。ありがとうございました!