web-dev-qa-db-ja.com

crontabによって実行されないphpスクリプト

Phpスクリプトの1つを実行するためにcronをセットアップしました。しかし、問題は、PHPスクリプトが部分的にでもまったく実行されていないことです。

ここに私が設定したcronがあります

45 23 * * * /usr/bin/php -q /var/www/myscript.php

私は次を試しました

  1. 通常ユーザーからrootユーザーにcronを削除しても、まだ結果はありません。
  2. chmod +x /var/www/myscript.phpを使用してスクリプトの権限を変更しました
  3. コマンドwhereis phpを使用しましたが、次の結果が得られます

    php: /usr/bin/php /usr/share/man/man1/php.1.gz
    

今、私は他に何ができるかわかりません。助けてください。

追伸スクリプトを手作業で実行でき、完全に実行されます。

2
Tarun

1. man phpからわかるように...

   --no-header
   -q             Quiet-mode. Suppress HTTP header output (CGI only).

   --file file
   -f file        Parse and execute file

-qはphp-cliモードではanythingを行いません。他の人が指摘したように、-fが必要です。

2. + xは必要ありません。

で元に戻す:

chmod -x /var/www/myscript.php

3. whereisはすべての場所を提供します。バイナリだけが必要な場合は、which phpを使用します。

$ which php
/usr/bin/php
4
Oli

man cronおよびDebian固有の変更を参照してください。見積もり:

>上記で説明したように、これらのディレクトリの下のファイルは、以下を含むいくつかの健全性チェックに合格する必要があります:実行可能、rootによって所有され、グループまたはその他によって書き込み可能ではなく、symlinksの場合、rootによって所有されたファイルを指します。さらに、ファイル名は実行部分のファイル名要件に準拠する必要があります。完全に文字、数字で構成され、アンダースコア( '_')とハイフン( '-')のみを含めることができます。これらの要件に適合しないファイルは、実行パーツによって実行されません。たとえば、ドットを含むファイルは無視されます。

0
Brian

私は単なる推測をしていますが、スクリプトを配置するパスはすべきではありません

45 23 * * */usr/bin/php /var/www/html/myscript.php

私はまだcronの初心者です:)

0
Dexobox

正しいcrontab行は次のとおりです。

45 23 * * * /usr/bin/php -f /var/www/myscript.php

-fの代わりに-qに注意してください!

0
Frantique