アプリ版:「スタンプのみでお礼する」機能のリリースについて

crontabで毎分PHPのスクリプトを起動する記述をしましたが、すべて下記エラーが出て実行されません。

phpスクリプトの先頭で「#!bin/usr/php」を書く方法と、crontabで「* * * * * /usr/bin/php test.php > dev/null」とする方法を試してみましたが両方ともダメでした。
解決索があればご教示下さい。


【エラー内容】
test.php: line 1: ?php: No such file or directory

A 回答 (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
と書いた場合でも、一行目の先頭二文字が #! でないとかですね。
    • good
    • 0

>crontabで毎分PHPのスクリプトを起動する記述を


この手のエラーの原因はPATHが見つからないことに起因することが多いです。

要は、テストでは成功するのにcrontanに登録したら実行されない場合は「ls」でも「/bin/ls」など全てのコマンドを暗黙のPATHではなく明確に絶対PATHでコマンドを記述するとテストと同じように実行されるようになるはずです。

この回答への補足

回答ありがとうございます。

> この手のエラーの原因はPATHが見つからないことに起因することが多いです。
そう考えて、crontabの記述で、phpのフルパスを書いてみたのですがダメでした。
phpのパスは「which php」した結果「/usr/bin/php」だったので、これを追記してみました。

補足日時:2013/03/20 10:30
    • good
    • 0

>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

補足日時:2013/03/20 10:28
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!