2011-11-07 15 views
1

から、私はいくつかのMagentoのアクションをトリガーするPHPスクリプトを持っている、と私はのクーロンに設定しない:それはしかし、これは、スクリプトを起動するPHPスクリプトは動作しませんが、CLI

cd /home/dir/public_html; php -f file.php; 

何らかの理由で実行が終了しない場合、cronはユーザー "user"として実行され、rootとしてコマンドを実行すると完全に動作します。しかし、それが使用するすべてのファイルは、ユーザーにchownedです。私はそれがパスの問題だと思ったので、CDコマンドをその前に追加したのですが、そうではありませんでした。

私はこれがロックファイルの作成に問題があると思っています。ロックファイルを作成し、スクリプトを実行してから、ロックファイルを削除してから実行しないようにします。ロックファイルは生成されますが削除されることはありません。私が知っているのは、ユーザー "user"として作成した場合、そのユーザーとしても削除できるはずです。

どのような考えですか?とても有難い。

+0

"ロックファイルの削除"セクションに達する前に爆発する可能性があります。いくつかのデバッグ出力をさまざまな段階に追加することをお勧めします。 "これをやっている"、 "やっている"、 "何かを試みている"など... –

+0

ターミナルのコマンドラインで 'ユーザー'としてロックファイルを作成/削除できますか? –

+0

私はあなたが問題を発見したかもしれないと思う、 "ユーザー"はシェルアクセスを持っていません。まあ、それは愚かな質問でした。 – user652650

答えて

1

cronjobからphpを呼び出す代わりに、phpファイルを呼び出すシェルスクリプトを呼び出します。

次に、cronjobを変更する必要がなくてもスクリプトが実行されている環境を変更して、cronコマンドを簡単に試してみることができます(シェルスクリプトを呼び出すことができます)。

これで、シェルスクリプトで、PHPスクリプトが問題を最も確実に解決すると予想されるディレクトリを変更できます。

また、ファイルへの配管STDERRのように、ロギングとシェルエラー処理を扱う、iniファイルのディレクティブを変更することができますなど

これはまさにあなたの問題ではありませんが、この質問に与えられた情報は、あなたの問題を解決する可能性があります:How can I force PHP Version for Command Line?

3

は、PHPのフルパスを入れ、またはcrontabファイルの最初の行でPATH変数を定義してください:

PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/sbin:/usr/sbin 

編集:さらに、あなたはそのようなスクリプトを記録することができます

* * * * * cd /home/dir/public_html; /usr/bin/php -f file.php; &>/tmp/file.log 
関連する問題