- ベストアンサー
crontabでPHPスクリプトが実行出来ない
crontabで毎分PHPのスクリプトを起動する記述をしましたが、すべて下記エラーが出て実行されません。 phpスクリプトの先頭で「#!bin/usr/php」を書く方法と、crontabで「* * * * * /usr/bin/php test.php > dev/null」とする方法を試してみましたが両方ともダメでした。 解決索があればご教示下さい。 【エラー内容】 test.php: line 1: ?php: No such file or directory
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>phpスクリプトの先頭で「#!bin/usr/php」を書く方法と は、「#!/bin/usr/php」のタイプミスだとして、 >test.php: line 1: ?php: No such file or directory そのメッセージは、sh test.php としたときに出るメッセージですね。つまり、 * * * * * /bin/sh /パス/test.php と書いたときに出ます。 * * * * * /usr/bin/php /パス/test.php で、そういうメッセージが出ることはあり得ないと言っていいです。間違いは無いでしょうか? * * * * * /パス/test.php と書いた場合でも、一行目の先頭二文字が #! でないとかですね。
その他の回答 (2)
- gtx456gtx
- ベストアンサー率18% (194/1035)
>crontabで毎分PHPのスクリプトを起動する記述を この手のエラーの原因はPATHが見つからないことに起因することが多いです。 要は、テストでは成功するのにcrontanに登録したら実行されない場合は「ls」でも「/bin/ls」など全てのコマンドを暗黙のPATHではなく明確に絶対PATHでコマンドを記述するとテストと同じように実行されるようになるはずです。
- Wr5
- ベストアンサー率53% (2173/4061)
>test.php: line 1: ?php: No such file or directory は >phpスクリプトの先頭で「#!bin/usr/php」を書く の時…ですよね? 相対パスで記述することに何か意味があるのでしょうか? crontab実行時のカレントパスがどこになるのかはちょっと不明ですが、そこの下にbinディレクトリはありますか? というか…「#!/bin/usr/php」の書き間違いではありませんか? # まぁ、/bin/usr/phpがあるのかどうかは確認する必要があるでしょうが。 >crontabで「* * * * * /usr/bin/php test.php > dev/null」とする方法 記述したcrontabの場所はどこです? あと、エラー内容は? ユーザー毎に処理される/var/lib/cron/などと、システムとして処理される/etc/crontabでは書式が異なる。という場合がありますが。 # /etc/crontabだとコマンドの前に実行するユーザー名を記述する。ということがある。
補足
回答ありがとうございます。 > というか…「#!/bin/usr/php」の書き間違いではありませんか? 仰るとおりです。 こちらに書く時にbinの前のスラッシュが抜けておりました。 ですので、実際にはこの記述があってもなくても該当のエラーが出ている状況です。 > 記述したcrontabの場所はどこです? 今crontab.txtというファイルを作って、cronユーザに変身してから、「crontab crontab.txt」として追記しています。 このcrontabの場所ですが、「/var/spool/cron/ユーザ名」にあるとのことだったので、lsしてみると、「/var/spool/cron」の下は空でした。 逆にお聞きしたいのですが、今編集しているcrontabの場所はどうやって確認出来るのでしょうか(汗) > あと、エラー内容は? エラーの内容は先ほどしめした通り、下記のようなエラーが出ています。 test.php: line 1: ?php: No such file or directory
補足
回答ありがとうございます。 > この手のエラーの原因はPATHが見つからないことに起因することが多いです。 そう考えて、crontabの記述で、phpのフルパスを書いてみたのですがダメでした。 phpのパスは「which php」した結果「/usr/bin/php」だったので、これを追記してみました。