添加Laravel schedule:run cron任务时出现Command 'app' not found错误
问题原因
- 你编写的cron命令逻辑存在错误:
/usr/bin/php /var/www/html/my-project-root/是调用PHP程序执行项目根目录,PHP会默认运行目录下的index.php,这一步并不是切换工作目录的操作。 - 后续的
php artisan schedule:run既没有指定artisan文件的完整路径,也没有提前切换到项目根目录。cron任务的默认工作目录是执行用户的家目录,该路径下不存在artisan文件,运行时路径解析错误就会抛出Command 'app' not found报错。
解决方法
你可以选择以下任意一种正确的cron命令替换原有命令即可:
- 先切换到项目根目录再执行命令:
* * * * * cd /var/www/html/my-project-root && /usr/bin/php artisan schedule:run >> /dev/null 2>&1
- 直接指定artisan文件的完整路径执行:
* * * * * /usr/bin/php /var/www/html/my-project-root/artisan schedule:run >> /dev/null 2>&1
额外检查项
- 确认
/usr/bin/php是服务器上PHP可执行文件的正确路径,你可以在服务器执行which php命令获取实际路径,如果和上述路径不一致直接替换即可。 - 确认项目根目录下的artisan文件有可读权限,执行cron任务的用户对项目目录拥有对应操作权限。
- 配置完成后可以先手动运行一遍完整命令验证是否正常,无报错再写入cron配置。
内容的提问来源于stack exchange,提问作者Abhishek
相关产品推荐
相关产品推荐

