我正在尝试从 PHP 5.6 更新到 PHP 7.3
我安装了:
php7.0-fpm
php7.0-mysql
我已经启动了 2 个服务,但 Nginx 仅识别 PHP 5.6。如果我停止该服务,则会收到错误502 Bad Gateway
。
我已经/etc/nginx/sites-enabled/default
改为/var/run/php5-fpm.sock
/var/run/php/php7.0-fpm.sock
问题是我在每个子域中都有配置,并且每个子域都使用自己的套接字:
fastcgi_pass unix:/var/run/php/subdomain1.sock;
fastcgi_pass unix:/var/run/php/subdomain2.sock;
...
所以我不知道如何告诉 nginx 使用 PHP 7.3
答案1
看起来您从 Ondřej Surý 的 PHP 存储库安装了多个 PHP 版本。此存储库中的 PHP 包可以同时运行,因此都应该创建自己的套接字文件,您可以在 Web 服务器 (nginx) 配置中使用它们。
默认情况下,PHP 7.3 套接字应安装在 下/var/run/php/php7.3-fpm.sock
。鉴于:
- 服务
php7.3-fpm
已成功运行 - 套接字文件可供您的 Web 服务器用户读取(通常
www-data
)
您应该能够使用以下行将所需(子)域的 PHP 请求转发到 PHP 7.3 套接字:
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
因此,您的整体 nginx vhost 配置应如下所示:
server {
server_name some.domain.example.com;
listen 80;
listen 443 ssl;
ssl_certificate /etc/ssl/certs/subdomain.crt;
ssl_certificate_key /etc/ssl/certs/subdomain.key;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}