como adicionar um caminho open_basedir em nginx vhost

3

No php.ini eu configurei

open_basedir = /home/user/web/

Agora eu gostaria de executar o phppgadmin em um subdomínio que precisa incluir arquivos de / usr / share / phppgadmin.
Então eu adicionei a seguinte linha ao nginx-config para este host:

fastcgi_param PHP_VALUE open_basedir="/home/user/web/:/usr/share/phppgadmin/";

e reiniciado o nginx. No entanto, não consigo acessar o site devido ao seguinte erro:

[error] 31440#0: *1 FastCGI sent in stderr: "PHP Warning: include_once(): open_basedir restriction in effect. File(/usr/share/phppgadmin/libraries/lib.inc.php) is not within the allowed path(s): (/home/user/web/) in /usr/share/phppgadmin/info.php on line 10

Qual poderia ser a razão pela qual o segundo caminho não está listado aqui? O que mais eu preciso para adicionar um open_basedir para um host virtual? Eu usei apenas o arquivo padrão em / sites-available.

edit Sempre pense em reiniciar o fpm ...

service php5-fpm restart
    
por 32bitfloat 23.09.2012 / 23:41

2 respostas

5

Para sua situação em particular, você deve considerar apenas adicionar /usr/share ao padrão open_basedir , já que qualquer coisa lá foi projetada para ser lida pelo mundo de qualquer maneira.

Além disso, open_basedir é facilmente contornado, a menos que você tenha bloqueado shell_exec , exec , system e funções similares do PHP, portanto não considere seguro para usá-lo (eu sei, é uma droga).

Se você está se perguntando como pode contorná-lo facilmente, você pode usar apenas system('php -n ascript.php'); . O -n fará com que nenhum PHP.ini seja lido, portanto, nenhum open_basedir será aplicado.

    
por 23.09.2012 / 23:46
2

Apenas FYI, se você tiver configurações nginx configuradas para vários vhosts (portanto, configs em /etc/nginx/sites-enabled/example.com ), talvez seja necessário definir o fastcgi_param PHP_VALUE open_basedir= there:

    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;
    
por 05.05.2017 / 20:22