Может ли 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, но этому комментарию уже два года, и он мог быть исправлен.