コマンドラインから実行すると成功するがcronで動作させると失敗する1例

cronで動作させるスクリプトを作成したのですが、コマンドラインから実行すると問題なく成功するのにcronで動作させると失敗してしまう現象にハマりました。原因はコマンドラインだとパスが通っているがcronだとパスが通っていないことにありました。

誤:<?php system('php /example/example.php ' . date('Y-m-d', time() - 86400)) ?>

正:<?php system('/usr/local/bin/php /example/example.php ' . date('Y-m-d', time() - 86400)) ?>

cronだと動作しないときは思い出してみてください。

コメント / トラックバック

コメント / トラックバック 3 件

  1. うらん より:

    この問題で、つい先程までハマっていました。
    今絶対パスでPHPを書き換えてみました。
    結果が楽しみです。
    とても参考になりました。
    ありがとうございました。

  2. isomen より:

    まったく同じ問題で困っていました、
    require_onceで読み込んでいた環境定義ファイルのパスが相対パスになっていたようです。
    ありがとうございました。

  3. myu より:

    同じく、はまりから抜け出せました。ありがとうございます。