Diferentes configurações do PHP no Nginx

5

Eu tenho um servidor web executando vários servidores (hosts virtuais) usando nginx e fastcgi passando para um soquete unix.

O que eu quero realizar é uma configuração com beta.example.com e live.example.com, em que o site ativo tem o error_reporting desativado (mas ainda registra no arquivo) e no site beta error_reporting é em.

Então, com o Apache, eu faria algo nas linhas de:

<VirtualHost *:80>
    ServerName beta.example.com

    [...]

    php_flag display_errors on
    php_flag display_startup_errors on
    php_value error_reporting -1

    [...]
</VirtualHost>

Quando googling eu não encontrei nada onde eu posso passar esse tipo de parâmetros para o PHP usando fastcgi. Alguém sabe como fazer isso?

A configuração agora é (simplificada):

server {
    server_name beta.example.com;
    [...]
    fastcgi_pass unix:/var/run/nginx/php-fastcgi.sock;
    fastcgi_index index.php;
}
    
por kd35a 27.11.2013 / 13:47

3 respostas

4

Você pode passar essas opções para o PHP fastcgi do nginx com esta sintaxe:

fastcgi_param PHP_FLAG "display_errors=on \n display_startup_errors=on";
fastcgi_param PHP_VALUE "error_reporting=-1";

Observe o caractere de nova linha ( \n ) que deve estar entre as opções transmitidas.

    
por 27.11.2013 / 15:51
0

Por alguma razão, o PHP_FLAG não teve efeito para mim, mas de repente esta linha funcionou:

fastcgi_param   PHP_VALUE       "display_errors=on \n display_startup_errors=on \n error_reporting = E_ALL \n error_log = /var/log/nginx/foo-bar.error.log";

nginx / 1.11.6, php / php-fpm 5.6.31-4

    
por 09.10.2017 / 14:58
0

Você pode executar outro processo php-fastcgi com outro soquete e usar o snippet de configuração do seu post com o novo soquete. Outra vantagem é mais isolamento, você pode, por exemplo, executar o segundo processo de php sob um usuário, que não tem os direitos de acesso para mexer com o site de produção.

O lado nginx ficaria assim:

server {
    server_name production.example.com;
    [...]
    fastcgi_pass unix:/var/run/nginx/php-fastcgi.sock;
    fastcgi_index index.php;
}
server {
    server_name beta.example.com;
    [...]
    fastcgi_pass unix:/var/run/nginx/php-fastcgi-beta.sock;
    fastcgi_index index.php;
}

O lado do php depende de como você inicia os processos de fastcgi do php.

    
por 09.10.2017 / 16:58