2017-04-11 107 views
1

問題:
我有一個Laravel 5.4工匠任務,我需要通過cron運行 - 但它沒有被任憑指揮和調度程序完成的(顯然)正確設置。Laravel 5通過在AWS EC2的cron時間表 - 命令沒有運行

這是一個Laravel,PHP,Apache,Linux或crontab的問題?什麼是最好的診斷方法?


背景
在默認(亞馬遜AMI)EC2實例,技術人員命令被正確定義,並且當經由被稱爲從項目目錄(它是/var/www/html/myproject/)完全運行:

php artisan mycommand:option1 

我已經把它加入到時間表app/Console/Kernel.php,看起來像這樣:

protected function schedule(Schedule $schedule) 
{ 
    Log::info('schedule:run'); 
    $schedule ->command('mycommand:option1') 
         ->dailyAt('07:00') 
         ->emailOutputTo('[email protected]'); 

    $schedule ->command('mycommand:option2') 
         ->dailyAt('07:15') 
         ->emailOutputTo('[email protected]'); 
} 

新增通過sudo crontab -u apache -eapache以下cron命令:

* * * * * php /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1 

,以確保它不是一個權限問題我還增加了以下用戶相同的命令:通過crontab -e

  • root

    • ec2-user通過sudo crontab -e

    系統輸出

    sudo tail -f /var/log/cron

    Apr 11 19:17:01 ip-10-0-0-42 CROND[17968]: (root) CMD (php /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1) 
    Apr 11 19:17:01 ip-10-0-0-42 CROND[17969]: (ec2-user) CMD (php /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1) 
    Apr 11 19:17:01 ip-10-0-0-42 CROND[17970]: (apache) CMD (php /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1) 
    Apr 11 19:18:01 ip-10-0-0-42 CROND[17980]: (ec2-user) CMD (php /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1) 
    Apr 11 19:18:01 ip-10-0-0-42 CROND[17981]: (apache) CMD (php /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1) 
    Apr 11 19:18:01 ip-10-0-0-42 CROND[17982]: (root) CMD (php /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1) 
    Apr 11 19:19:01 ip-10-0-0-42 CROND[17992]: (root) CMD (php /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1) 
    Apr 11 19:19:01 ip-10-0-0-42 CROND[17993]: (ec2-user) CMD (php /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1) 
    Apr 11 19:19:01 ip-10-0-0-42 CROND[17994]: (apache) CMD (php /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1) 
    

    沒有出現在以下任一:
    sudo tail -f /var/www/html/myproject/storage/log/laravel.log

    sudo tail -f /var/www/html/myproject/storage/log/laravel-2017-04-11.log


    附加信息

    內核權限:

    drwxr-sr-x 2 apache apache 4096 Feb 24 00:24 Commands 
    -rw-r--r-- 1 apache apache 1111 Feb 24 00:24 Kernel.php 
    

    資源檢查:


    其他信息:

    • 運行Laravel 5.4.16由php artisan --version
    • 運行PHP 7.1確定。3,通過php -v
  • 回答

    2

    確定的問題涉及到php失蹤的(絕對)路徑在cron命令定義

    cron命令應該是:

    * * * * * /usr/local/bin/php /var/www/html/myproject/artisan schedule:run >> /dev/null 2>&1 
    

    你可以得到從終端which php輸出正確的php路徑

    備註:
    - Laravel Sc Laravel還沒有登錄的Log::info('schedule:run');每分鐘它應該像......即使(通過sudo crontab -e即設定的cron)從root運行的cron命令時
    -

    sudo crontab -u apache -e 
    

    :heduler命令經由加入cron的命令做工精細,從apache用戶 這可能與Laravel中的某些其他設置有關 - 因爲即使通過項目根目錄php artisan schedule:run手動運行調度程序,它也不會記錄任何內容

    相關問題