Может ли php-fpm поддерживать open_basedir, установленный динамически для нескольких виртуальных хостов с одним пулом пользователей?

Я сталкиваюсь с проблемой, когда попытка динамически установить open_basedir в nginx (и apache) для php-fpm "перетекла" в других vhosts при запуске php-fpm от имени пользователя "nobody" (по устаревшим причинам).

с помощью

fastcgi_param PHP_ADMIN_VALUE "open_basedir=/home/mike/htdocs";

а также

fastcgi_param PHP_ADMIN_VALUE "open_basedir=/home/adam/htdocs";

и т.д., где это уместно для каждого виртуального хоста (php 5.3.20)

phpinfo показывает правильный установленный open_basedir, но в конце концов (довольно быстро) я начинаю получать сообщения об ошибках, когда один из виртуальных хостов столкнется с неправильным open_basedir, пытаясь выполнить программу для "mike", но имея open_basedir для "adam",

Так как fastcgi_param просто устанавливает среду для php-fpm, я думаю, что происходит тот же самый работник, который изменит свою среду, пока он еще обрабатывает файл php.

Так или иначе, такие серверы, как litespeed, которые также используют php-процесс fastcgi (работающий как никто), понимают это правильно и работают правильно с возможностью установки open_basedir извне без "утечки" между виртуальными хостами.

Поэтому мне интересно, есть ли уловка или обходной путь, который я могу использовать, чтобы продолжать работать как "никто" и сохранять среду между vhosts.

Я должен отметить, что я использую сокеты Unix, а не tcp / ip, но я не думаю, что это имеет значение.

1 ответ

Я нашел упоминание об этой же проблеме здесь:

http://forum.nginx.org/read.php?3,234856

Они сказали, что смогли обойти его, используя новую директиву [host=xyz.xyz] для php.ini, которая стала доступна после 5.3

Руководство php.net показывает комментарий, предупреждающий, что это не работает должным образом с php-fpm, но этому комментарию уже два года, и он мог быть исправлен.

http://php.net/manual/en/ini.sections.php

Другие вопросы по тегам