使用Liebig在Laravel 5.X中运行cron作业时有未定义的索引

时间:2017-06-27 09:15:46

标签: php cron laravel-5.3 laravel-environment

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

enter image description here

注意:

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

我想:

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

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

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

最后我找到了问题的答案。

$ck_host=getenv('CK_HOST');是通过环境方法传递给当前脚本的关联变量数组。 See

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

所以作为解决方案使用getenv函数。就像,detail。它将获取环境变量的值。如果你在这两种情况下单独或通过Laravel运行都没有错误。