[英]Custom Laravel Artisan command not available through cron job
我有自定义的Artisan命令,当我在SSH上时在本地和我的生产服务器上运行,但是对于任何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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.