2016-08-26 1 views
2

Я запускаю свое веб-приложение под общим хостингом godaddy, и я пытаюсь запустить задание cron, которое вызовет мое задание расписания в моем приложении laravel. По какой-то причине планировщик не вызывается. Эти команды в GoDaddy, что я пытался до сих пор:Не удается запустить расписание задач в Laravel, используя cron job в Godaddy

          • php /path/to/artisan schedule:run >> /dev/null 2>&1
          • home/lulzimf/php /home/path/to/artisan schedule:run 1>> /dev/null 2>&1
          • usr/local/php /home/path/to/artisan schedule:run 1>> /dev/null 2>&1
          • /usr/local/bin /path/to/artisan schedule:run >> /dev/null 2>&1

Ни одна из этих команд выше, кажется, чтобы выполнить мой планировщик задач, я пытался вызвать команду с помощью команды мастеровых, это работает ... Что делать вы думаете, что это не работает?

Это как мое ядро ​​выглядит следующим образом:

<?php namespace App\Console; 

use Illuminate\Console\Scheduling\Schedule; 
use Illuminate\Foundation\Console\Kernel as ConsoleKernel; 

class Kernel extends ConsoleKernel { 

    /** 
    * The Artisan commands provided by your application. 
    * 
    * @var array 
    */ 
    protected $commands = [ 
     'App\Console\Commands\Inspire', 
     'App\Console\Commands\UpdateClassSession', 
    ]; 

    /** 
    * Define the application's command schedule. 
    * 
    * @param \Illuminate\Console\Scheduling\Schedule $schedule 
    * @return void 
    */ 
    protected function schedule(Schedule $schedule) 
    { 
     $schedule->command('inspire') 
       ->hourly(); 
     $schedule->command('class-session-update') 
       ->everyFiveMinutes(); 
    } 

} 
+0

Я предполагаю, что у вас есть реальный путь к файлу «ремесленника» на вкладке cron вместо/path/to/artisan? –

+0

@DenisMysenko как я могу это проверить? – artan

+1

/path/to/artisan - это просто местозаполнитель. тот, кто сказал вам использовать это, означал, что вам нужно заменить эту строку вашим фактическим путем на файл «artisan». вы не можете ожидать/путь/чтобы быть реальной папкой –

ответ

0

Не только GoDaddy, в моем опыте с другим хостингом я должен был изменить файл Schedule.php в Illmuniate\Console\Scheduling.

А потом я редактировал Line 49 к этому return $this->exec("/usr/bin/php -ea_php 70 -q /home/xxxxx/xxxxx/artisan {$command}", $parameters);

Так в основном это будет работать queue:work команду или какие-либо другие команды с указанием полного пути к PHP и полный путь к специалисту.

В моем случае я также должен был добавить -ea_php 70, потому что версия PHP по умолчанию, используемая кли, не поддерживалась laravel.

Итак:

  1. Проверка PHP версии и убедитесь, что она поддерживается Laravel.
  2. Проверьте версию PHP, используемую кли, чтобы выполнить ваш cron.
  3. Проверьте и используйте полный путь к php.
  4. Проверьте и используйте полный путь к ремесленнику.

В некоторых случаях вы можете также получить эту ошибку:

undefined index argv

За то, что вы должны изменить ваш php.ini файл и установить register_argc_argv в on.