crontabエントリの構文は正しいようです。実際、「crontab -e
」を使用してcrontabを編集する場合(必要に応じて)、とにかく構文的に無効なcrontabエントリを指定すると、エラーが発生します。
まず、/path_to_my_php_script/info.php
コマンドラインから正しく実行されますか?
もしそうなら、それはこのように正しく実行されますか?:
/bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null)"
それが機能する場合、このように機能しますか?
/bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null >/dev/null 2>&1)"
ステップ(3)は、cronがプログラムを実行する方法に似ています(「man 5 cron」で説明されています)。
あなたが抱えている最も可能性の高い問題は、PATH cronがプログラムの実行に使用している制限が強すぎることです。したがって、次のようなものをcrontabエントリの先頭に追加することをお勧めします(スクリプトで必要なディレクトリに追加する必要があります)。
PATH=~/bin:/usr/bin/:/bin
また、cronはデフォルトで/bin/sh
bashではなくを使用することに注意してください。bashが必要な場合は、これをcrontabファイルの先頭にも追加します。
SHELL=/bin/bash
これらの変更は両方ともすべてのcrontabエントリに影響することに注意してください。info.php
プログラムのこれらの値を変更したいだけなら、次のようなことができます。
*/2 * * * * /bin/bash -c ". ~/.bashrc; /path_to_my_php_script/info.php"
「メール」用に構成されたシステム(つまり、[sendmail / postfix / etc]が構成されたシステム)では、crontabプログラムからのすべての出力が電子メールで自動的に送信されることにも言及する価値があります。デフォルトのUbuntuデスクトップシステムにはローカルメールが設定されていませんが、サーバーで作業している場合は、ターミナルで「mail」と入力するだけですべてのcronメールを表示できます。これは、「at
」コマンドにも適用されます。