用参数将Laravel任务添加到cron


Add Laravel task to cron with parameters

我想在cron中添加一个Laravel任务,这是我用来从命令行运行它的方法(并且运行成功)

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'

谁能解释我正确的语法执行laravel任务在cron?

实际上,只有当我将cron命令放在SH脚本中时才会出现问题。由于未知的原因,脚本没有发送"——env=staging"参数,这在描述错误时结束。

提示环境列表设置不正确。我不确定为什么会有问题。

请参阅我的crontab文件,供参考。这适用于我的debian linux安装。还要注意-f标志,这可能是问题所在。

0 23 * * * /usr/bin/php -q -f /home/usr/demo/public_html/artisan mytask --env=live

在我的服务器上,php-cli输出所有php- notice,因此给我发了很多邮件。因此,您应该检查php通知和/或通过设置error_reporting(E_ERROR);禁用它们。

该错误表明没有为暂存环境配置数据库连接。带有"@'localhost'"的位应该包含db连接的用户名。即:"a_db_user"@"localhost"。因为它是空的,我们可以知道没有配置db用户。db配置需要在application/config/database.php或application/config/staging/database.php

中设置。