![Nginx 中的 PHP 7 和 5.6 并行](https://linux22.com/image/676119/Nginx%20%E4%B8%AD%E7%9A%84%20PHP%207%20%E5%92%8C%205.6%20%E5%B9%B6%E8%A1%8C.png)
我想在较新的应用程序中使用 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
位置按照正则表达式位置的顺序排在第一位。