从 PHP 5.6 更新至 PHP 7.3

从 PHP 5.6 更新至 PHP 7.3

我正在尝试从 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;
  }
}

相关内容