dubr
@dubr
пыхарь

Как работает fastcgi_param php_admin_value?

Привет! Скажите, правильно ли я понимаю, что происходит со значениями fastcgi_param PHP_ADMIN_VALUE в связке nginx - php-fpm?

Например, у нас есть такой кусок конфига:

location = /a.php {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_param  SCRIPT_FILENAME $document_root$uri;
            fastcgi_param  PHP_ADMIN_VALUE "open_basedir = $document_root:/test-$msec";
            include        fastcgi_params;
}

location = /b.php {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_param  SCRIPT_FILENAME $document_root$uri;
            include        fastcgi_params;
}


Файлы a.php и b.php показывают open_basedir:

<?php
echo ini_get('open_basedir');


И fpm-пул с total processes: 3.

Когда мы открываем /a.php, в один из процессов пула передается наш странный open_basedir, и скрипт его показывает. Когда мы открываем /b.php и несколько раз жмем F5, мы видим по очереди либо пустоту, либо значение, которое видели на странице /a.php. Если несколько раз обновить /a.php, а затем обновлять /b.php, мы будем по кругу наблюдать три значения, переданных из локейшна /a.php.

То есть значения из fastcgi_param PHP_ADMIN_VALUE ... сохраняются внутри процесса, и, если их не передать явно, при следующем запросе, обработанном этим процессом, будут использоваться последние сохраненные?

Правильно ли я понимаю, что если у нас только один location, отправляющий запрос на fpm, мы с этим (имхо, не вполне очевидным) поведением не столкнемся? Или есть какие-то еще подводные камни? Есть какой-нибудь внятный текст об этом механизме?

Спасибо )
  • Вопрос задан
  • 1456 просмотров
Решения вопроса 1
@Yudgin888
fastcgi_param PHP_ADMIN_VALUE устанавливается для процесса до окончания его срока жизни, и такой параметр потом не может быть переопределен через ini_set, только через другой PHP_ADMIN_VALUE.
Описание этих директив есть здесь https://www.php.net/manual/en/configuration.changes.php
Отвечая на вопрос: да, с таким поведением не столкнетесь. Но нужно помнить, что этот параметр также будет расспространяться и на другие секции server, если для них установлен один и тот же обработчик php-fpm
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы