【问题标题】:Have Undefined index while run the cron job in Laravel 5.X with Liebig使用 Liebig 在 Laravel 5.X 中运行 cron 作业时具有未定义的索引
【发布时间】:2017-11-30 06:44:07
【问题描述】:

我的 cron 作业中有一个奇怪的错误。一开始,当我运行 cron 作业时,它工作正常。那时我通常定义变量。比如$ck_host='abc';。但是现在我更改了代码并从 laravel 的 .env 文件中访问了相同的变量。比如$ck_host=$_ENV['CK_HOST'];。当我在浏览器中运行时,它工作正常。但在 cron 作业中,它显示未定义索引:CK_HOST。我已经附上了日志的图片。

注意:

  • 我正在使用vlucas/phpdotenv 访问 env 文件。
  • 所有的 crons 都不在 Laravel 中。有一些在核心 PHP 中。问题出在核心 PHP 中。
  • github 中发布问题。但没看懂答案。

我认为:

问题是我在代码中调用 .env 文件的位置。该玉米供应商无法使用该功能。 $dotenv = new Dotenv\Dotenv($doc_root); $dotenv->load(); $doc_root 包含 env 文件的路径。请再次注意,所有文件都在浏览器中运行,但是当我运行 cron 时,我也在编写一个日志文件。错误就来了。

请帮助我。或者告诉我如何在没有任何 laravel 供应商的情况下使用 .env 文件。

提前感谢您的帮助。

【问题讨论】:

  • 可能是您没有正确加载 env 文件,因此 Dotenv 无法设置环境变量。确保$doc_root 正确。
  • 如果我在浏览器中运行 url,它会给我正确的答案。没有错误。

标签: php cron laravel-5.3 laravel-environment


【解决方案1】:

我终于找到了我的问题的答案。

$_ENV 是通过环境方法传递给当前脚本的变量关联数组。 See.

但是 Laravel 会覆盖变量并使用自己的方法。所以,当这个文件单独运行时,没有错误。但是当它通过 Laravel 运行时,在这种情况下是通过 Laravel Cron 方法运行时,它会覆盖并且没有找到那些索引。

因此,使用getenv 函数作为解决方案。比如$ck_host=getenv('CK_HOST');。它将获取环境变量的值。如果你在这两种情况下单独运行或通过 Laravel 运行,都不会出错。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    • 2011-01-22
    相关资源
    最近更新 更多