У меня есть пользовательские команды Artisan, которые запускаются локально, а также на моем рабочем сервере, когда я нахожусь в SSH'd, но недоступны для любых заданий cron. Я даже попробовал запустить его как пользователь, выполняющий задание cron, и он отлично работает с моей консоли.
Когда я запускаю php artisan
в приведенных выше настройках, мои пользовательские команды перечислены и доступны. Тем не менее, они не указаны, когда я запускаю php artisan
в качестве задания cron.
Кроме того, пытаясь запустить пользовательскую команду php artisan subjects:calculate
как задание cron, приводит к следующей ошибке:
[InvalidArgumentException]
There are no commands defined in the "subjects" namespace.
Я боролся с той же ошибкой, и я нашел решение. Первые неудачные попытки
*/5 * * * * /usr/bin/php /home/mysite/public_html/artisan my:command */5 * * * * php /home/mysite/public_html/artisan my:command
Решение
*/5 * * * * /usr/local/bin/php /home/mysite/public_html/artisan my:command
Обязательно добавьте команду в файл app / start / artisan.php:
Artisan::add(new SubjectsCommand);
или если вы используете контейнер IOC:
Artisan:resolve('SubjectsCommand');
Затем запустите CronJob из папки приложения:
00 09-18 * * 1-5 php /path/to/yourapp/artisan subjects:calculate
или
00 09-18 * * 1-5 /usr/bin/php /path/to/yourapp/artisan subjects:calculate
По крайней мере, для меня это сработало:
class Kernel extends ConsoleKernel { protected $commands = [ // Commands\YourCommand::class, ]; }
Просто добавила мою команду в список ядра команд.
Вы, вероятно, должны убедиться, что ремесленник работает из правильной директории
cd /path/to/yourproject && php artisan subjects:calculate