Nginx 中的 PHP 7 和 5.6 并行

Nginx 中的 PHP 7 和 5.6 并行

我想在较新的应用程序中使用 PHP 7,在应用程序中使用 PHP 5.6,但这不适用于 PHP 7。因此,我尝试配置 Nginx 以针对不同的路径启用不同的 PHP 版本。但不起作用:

 # 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;
 }

其他所有系统的默认设置均为 PHP 7:

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

使用此配置,/vexim/ 下的 PHP 脚本根本无法解析。如何使其适用于不同的路径和 PHP 版本?

(使用 Debian 8.3 Jessie、Nginx 1.8.1(dotdeb)、PHP 5.6、PHP 7(dotdeb))

答案1

location ^~不是正则表达式位置,而是优先于所有正则表达式位置的前缀位置。

这个文件了解详情。

你可能想要的是:

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

确保/vexim位置按照正则表达式位置的顺序排在第一位。

相关内容