Имейте неопределенный индекс при запуске задания 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, то в обоих случаях ошибки нет.