PHP 7 e 5.6 paralelo no Nginx

1

Eu quero usar o PHP 7 com aplicativos mais novos e o PHP 5.6 com apps, que não funciona com o PHP 7. Então, eu tento configurar o Nginx para ativar diferentes versões do PHP para diferentes caminhos. Mas isso não funciona:

 # should enable PHP5 for all PHP-scripts under /vexim/ path
 location ^~ /vexim/.*\.php$ {
     include snippets/fastcgi-php.conf;
     fastcgi_pass unix:/var/run/php5-fpm.sock;
 }

E o padrão para qualquer outra coisa deve ser o PHP 7:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}

Com esta configuração, os scripts PHP em / vexim / não são analisados de todo. Como fazer isso funcionar com diferentes pathes e versões do PHP?

(usando Debian 8.3 Jessie, Nginx 1.8.1 (dotdeb), PHP 5.6, PHP 7 (dotdeb))

    
por Michael 02.02.2016 / 09:52

1 resposta

2

location ^~ não é um local de regex, é um local de prefixo que tem precedência sobre todos os locais de expressão regular.

Veja este documento para detalhes.

O que você provavelmente quer é:

location ~ ^/vexim/.*\.php$ { ... }
location ~ \.php$ { ... }

Certifique-se de que a localização /vexim vem em primeiro lugar, pois as localizações de expressões regulares são ordenadas.

    
por 02.02.2016 / 10:47