我有一個共享主機上的Laravel 5.4應用程序,並且cron作業不起作用。我在kernel.php設置的命令,就像這樣:是否有可能更改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
運行良好。當它被cron作業調用時雖然它沒有運行。這是我的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版本是5.2,我必須在htaccess文件中添加一條規則才能使用PHP 5.6。如果我忘記添加規則,我會得到與cron-get_events.log中相同的錯誤,所以這讓我相信命令不起作用的原因是因爲當調度程序運行它時,它正在調用命令與/usr/bin/php
作爲PHP的路徑而不是/usr/bin/php-5.6
有沒有辦法配置任務調度器使用不同的路徑到PHP?