#laravel #soap #environment-variables #php-7.4
#laravel #soap #переменные среды #php-7.4
Вопрос:
Мой сайт Laravel использует SoapClient для доступа к другому сайту во время загрузки страницы (при этом выполняется около 6 секунд обработки данных перед вызовом soap.) Я заметил, что иногда SoapClient переключается в режим, отличный от wsdl, и процесс выдает ошибки. Я обнаружил, что это происходит потому, что SoapClient было передано значение NULL для его первого параметра конструктора (URI файла WSDL). Я подумал, что это странно, потому что это значение пришло непосредственно из файла .env. У сайта не было проблем с подключением к базе данных, поэтому файл .env должен был работать. Я настроил функцию, которая повторно обращается к переменным .env во время загрузки страницы, используя env(…) . Во время ошибки Soap я обнаружил, что примерно через четыре секунды сайт потерял доступ к переменным .env. До этого момента информация была доступна. После этого момента вызовы env() возвращали значение NULL . Это может быть связано с другим запросом страницы (возможно, повторные вызовы на ту же страницу, запрашивающие тот же процесс.) Кроме того, я только что обновил php до версии 7.4.13 (xampp с поддержкой 64-разрядных потоков: php-7.4.13-Win32-vc15-x64.) Кто-нибудь видел это раньше и есть способ решить эту проблему?
РЕДАКТИРОВАТЬ ====
SoapClient был создан в модели, и функция env() использовалась для доступа к переменным среды. Я узнал, что env() не следует использовать нигде, кроме файлов конфигурации. Это может объяснить мою проблему.
Ответ №1:
Я никогда не видел этой проблемы. Но подход может заключаться в том, чтобы загрузить переменную env в переменную конфигурации и использовать ее вместо этого. Например: создайте extra.php
файл в каталоге конфигурации следующим образом:
<?php
return [
'api_url' => env('API_URL'),
];
И используйте это так:
config('extra.api_url');
// Instead of env('API_URL')
Надеюсь, это сработает.
Комментарии:
1. Я пошел с аналогичным исправлением. Я загрузил файл .env в $GLOBALS и оттуда получил доступ к переменным.