0

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

在此处输入图像描述

笔记:

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

我认为:

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

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

提前感谢您的帮助。

4

1 回答 1

0

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

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

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

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

于 2017-06-30T07:40:16.773 回答