我想将一个Laravel任务添加到cron中,这是我用来从命令行运行它(并成功运行)
php artisan cron:hourly --env=staging
翻译成cron:
/usr/bin/php -q /home/usr/public_html/staging/artisan cron:hourly --env=staging
我认为参数--env=staging
存在问题,因为我在执行cron时遇到错误(没有此参数我无法在暂存环境中运行任务):
Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [1045] Access denied for user ''@'localhost'
有人能解释一下在cron中执行laravel任务的正确语法吗?
更新
实际上,只有将cron命令放在SH脚本中才会出现问题。由于未知原因,脚本不会发送“--env = staging”参数,这将以所描述的错误结束。
答案 0 :(得分:2)
错误消息表明环境中的某些内容未正确设置。我不确定为什么会出现问题。
请参阅我的crontab文件,以供参考。这适用于我的debian linux安装。另请注意-f
标志,这可能是问题所在。
0 23 * * * /usr/bin/php -q -f /home/usr/demo/public_html/artisan mytask --env=live
在我的服务器上,php-cli输出所有PHP通知,因此向我发送了很多电子邮件。所以你应该检查PHP-Notices和/或通过设置error_reporting(E_ERROR);
来禁用它们。
答案 1 :(得分:0)
该错误表示没有为登台环境配置数据库连接。带有''@ localhost'的位应该包含db连接的用户名。即:'a_db_user'@'localhost'。因为它是空的,我们可以告诉没有配置db用户。 db config需要在application / config / database.php或application / config / staging / database.php中设置