【问题标题】:Add Laravel task to cron with parameters使用参数将 Laravel 任务添加到 cron
【发布时间】:2013-03-31 17:28:34
【问题描述】:

我想在 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'

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

更新

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

【问题讨论】:

  • 您是否使用服务器变量进行数据库连接?

标签: php parameters cron laravel environment


【解决方案1】:

错误消息表明环境设置不正确。我不确定为什么会出现问题。

请查看我的 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); 来禁用它们。

【讨论】:

  • 我有完全相同的命令:/usr/bin/php -q -f /home/user/public_html/staging/artisan cron:every_hour --env=staging 但它不起作用,我想知道是不是因为 cron:every_hour 格式破坏了整个命令。
  • 不,它没有,一直说同样的错误Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [1045] Access denied for user ''@'localhost' (using password: NO)'。错误就在此时,但我找不到正确的语法。
  • 这意味着执行了PHP脚本,但没有设置环境。如果您在 shell 上运行任务,它是否有效?您可以尝试不带冒号: 符号的任务吗?
【解决方案2】:

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

【讨论】:

  • 谢谢你,你是对的,问题是参数--env=staging没有被Laravel接收。我正在寻找解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多