2017-08-30 6 views
0

共有ホスティングにある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と異なるパスを使用するようにタスクスケジューラを設定する方法はありますか?

答えて

0

私はから私のスケジューラタスク定義を変更することで問題を解決するために管理している:私はまだよりよいがあるかどうを通して知って興味があると思い

$schedule->exec('/usr/bin/php-5.6 /var/sites/c/cyo.mydomain.com/artisan eoddsmaker:get_events >> /var/sites/c/cyo.mydomain.com/cron.log 2>&1') 
    ->withoutOverlapping() 
    ->appendOutputTo(storage_path('logs').'/cron-get_events.log') 
    ->everyMinute(); 

$schedule->command('eoddsmaker:get_events') 
    ->withoutOverlapping() 
    ->appendOutputTo(storage_path('logs').'/cron-get_events.log') 
    ->everyMinute(); 

へ私はちょうどLaravel内のPHPへのパスを宣言することができるようにこれを達成する方法

関連する問題