В php.ini я установил
open_basedir = /home/user/web/
Теперь я хотел бы запустить phppgadmin на поддомене, который должен включать файлы из / usr / share / phppgadmin.
Итак, я добавил следующую строку в nginx-config для этого хоста:
fastcgi_param PHP_VALUE open_basedir="/home/user/web/:/usr/share/phppgadmin/";
и перезапустил nginx. Однако я не могу получить доступ к сайту из-за следующей ошибки:
[ошибка] 31440 # 0: * 1 FastCGI отправлен в stderr: "Предупреждение PHP: include_once (): ограничение open_basedir действует. Файл (/usr/share/phppgadmin/libraries/lib.inc.php) находится за пределами разрешенного пути (s): (/ главная / пользователь / сеть /) в /usr/share/phppgadmin/info.php в строке 10
В чем может быть причина того, что 2-й путь здесь не указан? Что еще мне нужно, чтобы добавить open_basedir на виртуальный хост? Я использовал только файл по умолчанию в / sites-available.
редактировать Всегда думайте о перезапуске fpm ...
service php5-fpm restart
В вашей конкретной ситуации вам следует просто добавить /usr/share
по умолчанию open_basedir
, поскольку все, что там есть, в любом случае предназначено для чтения миром.
Плюс, open_basedir
легко обойти, если вы не заблокировали shell_exec
, exec
, system
и аналогичные функции PHP, поэтому не считайте безопасным его использование (я знаю, это отстой).
Если вам интересно, как можно легко его обойти, вы можете просто system('php -n ascript.php');
. В -n
не приведет к чтению PHP.ini, поэтому нет open_basedir
будет применяться.
Просто к вашему сведению, если у вас есть конфигурации nginx, установленные для нескольких vhosts (так что конфигурации в /etc/nginx/sites-enabled/example.com
) то вам может потребоваться установить fastcgi_param PHP_VALUE open_basedir=
там:
location ~ \.php$ {
try_files $uri =404;
fastcgi_param PHP_VALUE open_basedir="/var/www/:/new/path";
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
Настройка open_basedir
через fastcgi_param
может вызвать некоторые проблемы когда на вашем сервере несколько сайтов.
Другой вариант - использовать .user.ini .