使用参数将Laravel任务添加到cron

时间:2013-04-09 10:18:31

标签: php parameters cron laravel environment

我想将一个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”参数,这将以所描述的错误结束。

2 个答案:

答案 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中设置