Phpスクリプトの1つを実行するためにcronをセットアップしました。しかし、問題は、PHPスクリプトが部分的にでもまったく実行されていないことです。
ここに私が設定したcronがあります
45 23 * * * /usr/bin/php -q /var/www/myscript.php
私は次を試しました
chmod +x /var/www/myscript.php
を使用してスクリプトの権限を変更しましたコマンドwhereis php
を使用しましたが、次の結果が得られます
php: /usr/bin/php /usr/share/man/man1/php.1.gz
今、私は他に何ができるかわかりません。助けてください。
追伸スクリプトを手作業で実行でき、完全に実行されます。
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
が必要です。
で元に戻す:
chmod -x /var/www/myscript.php
whereis
はすべての場所を提供します。バイナリだけが必要な場合は、which php
を使用します。$ which php
/usr/bin/php
man cron
およびDebian固有の変更を参照してください。見積もり:
>上記で説明したように、これらのディレクトリの下のファイルは、以下を含むいくつかの健全性チェックに合格する必要があります:実行可能、rootによって所有され、グループまたはその他によって書き込み可能ではなく、symlinksの場合、rootによって所有されたファイルを指します。さらに、ファイル名は実行部分のファイル名要件に準拠する必要があります。完全に文字、数字で構成され、アンダースコア( '_')とハイフン( '-')のみを含めることができます。これらの要件に適合しないファイルは、実行パーツによって実行されません。たとえば、ドットを含むファイルは無視されます。
私は単なる推測をしていますが、スクリプトを配置するパスはすべきではありません
45 23 * * */usr/bin/php /var/www/html/myscript.php
私はまだcronの初心者です:)
正しいcrontab行は次のとおりです。
45 23 * * * /usr/bin/php -f /var/www/myscript.php
-f
の代わりに-q
に注意してください!