Я хочу использовать переменные среды в своих PHP-приложениях как в CLI, так и в FPM. Что я делаю, так это я:
/etc/environment
.php.ini
(CLI и FPM) в variables_order = "EGPCS"
.www.conf
к clear_env = no
Я ожидаю, что переменные среды доступны как в CLI, так и в приложении FPM. Фактически это работает только для CLI. ФПМ $_ENV
не содержит этих переменных среды.
Я заметил, что можно определять переменные среды в www.conf
но это неудобно, так как мне нужно скопировать и вставить все переменные из /etc/environment
и всегда синхронизируйте два файла.
Возникает вопрос: можно ли передать все переменные среды непосредственно в приложение PHP-FPM без их копирования и вставки в www.conf
?
Из документы:
По умолчанию nginx удаляет все переменные среды, унаследованные от его родительского процесса, кроме переменной TZ.
Как вы упомянули, вы пробовали установить их в конфигурации fastcgi, что, я думаю, лучшее, что вы можете сделать в этой ситуации. Для других это делается так:
location ~ \.php$ {
# ...
fastcgi_param APPLICATION_ENV "production";
fastcgi_param MY_OTHER_ENV "things";
include fastcgi_params;
# ...
}
Я понимаю отвращение к «копипасту» и согласен! Вам следует рассмотреть возможность использования инструмента управления конфигурацией, такого как Puppet, SaltStack, Ansible, для управления своими файлами конфигурации. Таким образом, вы можете легко синхронизировать список переменных среды между всеми необходимыми местоположениями. Дайте мне знать, если вам понадобится дополнительная информация об этом.