Моя конфигурация nginx имеет следующий вид
location ~* \.(php)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
fastcgi_params
имеет переменную DB_PASSWORD
.
И я могу получить значение этой переменной, запустив php-скрипт в браузере через $_SERVER['DB_PASSWORD']
, но если я запускаю консольный скрипт, например
./yii migrate/up
То этих переменных $_SERVER
уже не содержит. Как их туда пробросить?
Использую php-fpm
Пробросить fastcgi_params в консольный скрипт невозможно.
FastCGI - интерфейс между веб-сервером и PHP. Путь такой: переменная из конфига => протокол FastCGI => PHP интерпретатор разбирает запрос по протоколу (см также variables_order) => глобальная переменная в вашем PHP-скрипте.
Консольный скрипт запускает интерпретатор по CLI SAPI (php cli
). FastCGI тут не используется, так как запуск из командной строки, и веб-сервер не принимает ни какого участия. Также php cli
имеет собственный php.ini
файл, поэтому конфигурация у него отдельная. Узнать ее можно так: php --ini
Если вам нужны переменные в php-cli - используйте окружение.
DB_PASSWORD=password php {ваш скрипт}.php
export DB_PASSWORD=password
php {ваш скрипт}.php
Нужно отредактировать /etc/environment
, изменения будут видны после перезапуска службы (для пользователя - перелогиниться). Для передачи пароля этот способ плохой по безопасности: виден всем.
Если используется Docker, в Dockerfile
возможно записать ENV DB_PASSWORD=password
, или передать из командной строки при старте:
docker run ... -e DB_PASSWORD=password ...
Доступ в PHP
Внутри скрипта будет доступно:
var_dump($_SERVER['DB_PASSWORD']);
var_dump(getenv('DB_PASSWORD'));
PS. Узнать какой SAPI используется можно через php_sapi_name().
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Всем доброго времени суток Использую парсера Simple html dom, для парсинга
Разработал парсер, который парсит обменники от 50 до 150 сайтовНа каждом сайта XML с данными ( валюты, курсы, прибыль, резерв, и т