共有ホスティングにあるLaravel 5.4アプリがあり、cronジョブが動作していません。は、Laravelタスクスケジューラが使用するPHPへのパスを変更することが可能です
$schedule->command('eoddsmaker:get_events')
->withoutOverlapping()
->appendOutputTo(storage_path('logs').'/cron-get_events.log')
->everyMinute();
そして私はちょうどそれがうまく実行するコマンドラインから/usr/bin/php-5.6 artisan eoddsmaker:get_events
を実行する場合:私はそうのようなkernel.phpにコマンドを設定しています。走っていなくてもクーロン仕事で呼び出されると。これは私のcronの定義である:
* * * * * /usr/bin/php-5.6 /var/sites/c/cyo.mydomain.com/artisan schedule:run >> /var/sites/c/cyo.mydomain.com/cron.log 2>&1
私はそれが次の出力がcron.logファイルに追加されます実行することを、このタスクは毎分を実行しているサーバーと毎回上のcronログから見ることができます
Running scheduled command: '/usr/bin/php' 'artisan' eoddsmaker:get_events > '/dev/null' 2>&1
X-Powered-By: PHP/5.6.8
Content-type: text/html; charset=UTF-8
だから私は、私は次のように出力を送信するようにタスクを設定しているのcron-get_events.logファイルで見た場合、出力にそれが実行されるたびに取得するビット深く掘るします
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /var/sites/c/cyo.mydomain.com/artisan on line 31
Parse error: syntax error, unexpected T_STRING in /var/sites/c/cyo.mydomain.com/artisan on line 31
をBecau私はPHPのバージョンがデフォルトである共有ホスティングになっているので、PHP 5.6を使用するにはhtaccessファイルにルールを追加する必要があります。私がルールを追加することを忘れた場合、私はcron-get_events.logにあるものと同じエラーが出るので、これは、コマンドが機能していない理由は、スケジューラが実行されているときにコマンドを呼び出す/usr/bin/php
を/usr/bin/php-5.6
の代わりに
PHPと異なるパスを使用するようにタスクスケジューラを設定する方法はありますか?