Имейте неопределенный индекс при запуске задания cron в Laravel 5.X с Liebig

У меня странная ошибка в моей работе cron. В начале, пока я выполняю работу cron, она работает нормально. В то время я обычно определяю переменные. Подобно, $ck_host='abc';, Но теперь я изменяю код и получаю доступ к той же переменной из файла.env laravel. Подобно, $ck_host=$_ENV['CK_HOST'];, Когда я бегу в своем браузере, он работает нормально. Но в задании cron он говорит неопределенный индекс: CK_HOST. Я приложил изображение журнала.

Замечания:

  • Я использую https://github.com/vlucas/phpdotenv для доступа к файлу env.
  • Все кроны не в Ларавеле. В ядре PHP есть некоторые. Проблема в основном в PHP.
  • Опубликовать вопрос в github. Но не поняла ответ.

Я думаю:

Проблема в том, где я вызываю файл.env в коде. Этот продавец кукурузы не может использовать эту функцию.$dotenv = new Dotenv\Dotenv($doc_root); $dotenv->load();$doc_root содержит путь к файлу env. Пожалуйста, обратите внимание еще раз, все файлы работают в браузере, но когда я запускаю cron, я также записываю файл журнала. Ошибка пришла туда.

Пожалуйста, помогите мне. Или скажите мне, как я буду использовать.env файл без какого-либо поставщика laravel.

Заранее спасибо за помощь.

1 ответ

Решение

Наконец я нашел ответ на свой вопрос.

$_ENV является ассоциативным массивом переменных, передаваемых текущему сценарию с помощью метода среды. См.

Но Laravel перезаписывает переменную и использует свой собственный метод. Таким образом, когда этот файл запускается индивидуально, ошибки не возникает. Но когда он запускается через Laravel, в данном случае через метод Laravel Cron, он перезаписывает и не находит эти индексы.

Так что в качестве решения используйте функцию getenv. Подобно, $ck_host=getenv('CK_HOST');, Он получит значение переменной среды. И если вы запускаете индивидуально или через Laravel, то в обоих случаях ошибки нет.

Другие вопросы по тегам