如何在 CentOS 7 上升级到 PHP 7如何在 CentOS 7 上升级到 PHP 7如何在 CentOS 7 上升级到 PHP 7如何在 CentOS 7 上升级到 PHP 7
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 CentOS 7 上升级到 PHP 7

介绍

PHP 7 于 2015 年 12 月 3 日发布,承诺比以前的语言版本有显着的速度改进,以及标量类型提示等新功能。本指南介绍了如何使用社区提供的软件包将运行 PHP 5.x(任何版本)的 Apache 或 Nginx Web 服务器快速升级到 PHP 7。

警告:与大多数主要版本的语言版本一样,最好在生产中切换到 PHP 7 之前稍等片刻。与此同时,现在是测试您的应用程序与新版本的兼容性、执行基准测试并熟悉新语言功能的好时机。

如果您已经安装了用于数据库管理的phpMyAdmin,强烈建议您在升级前等待CentOS PHP 7 官方包,因为phpMyAdmin 包尚不支持升级。如果您正在与活跃用户一起运行任何其他服务或应用程序,最安全的做法是先在暂存环境中测试此过程。

先决条件

本指南假定您在 CentOS 7 上运行 PHP 5.x,将 mod_php 与 Apache 结合使用,或将 PHP-FPM 与 Nginx 结合使用。它还假设您有一个非 root 用户配置了 sudo 管理任务的权限。

PHP 5 安装过程记录在这些指南中:

  • 如何在 CentOS 7 上安装 Linux、Apache、MySQL、PHP (LAMP) 堆栈
  • 如何在 CentOS 7 上安装 Linux、Nginx、MySQL、PHP (LEMP) 堆栈

订阅 IUS 社区项目存储库

由于 PHP 7.x 尚未打包到主要发行版的官方存储库中,我们将不得不依赖第三方资源。多个存储库提供 PHP 7 RPM 文件。我们将使用 IUS 存储库。

IUS 提供了一个安装脚本,用于订阅他们的存储库并导入相关的 GPG 密钥。确保您位于主目录中,并使用 curl 检索脚本:

  1. cd ~
  2. curl 'https://setup.ius.io/' -o setup-ius.sh

运行脚本:

  1. sudo bash setup-ius.sh

使用 Apache 升级 mod_php

本节介绍使用 Apache 作为 Web 服务器并使用 mod_php 执行 PHP 代码的系统的升级过程。相反,如果您正在运行 Nginx 和 PHP-FPM,请跳到下一节。

首先删除现有的 PHP 包。出现提示时按 y 并按 Enter 继续。

  1. sudo yum remove php-cli mod_php php-common

从 IUS 安装新的 PHP 7 包。再次,在出现提示时按 y 和 Enter。

  1. sudo yum install mod_php70u php70u-cli php70u-mysqlnd

最后,重新启动 Apache 以加载新版本的 mod_php:

  1. sudo apachectl restart

您可以使用 systemctl 检查由 httpd systemd 单元管理的 Apache 的状态:

  1. systemctl status httpd

使用 Nginx 升级 PHP-FPM

本节介绍使用Nginx作为Web服务器,使用PHP-FPM执行PHP代码的系统的升级过程。如果您已经升级了基于 Apache 的系统,请跳到 PHP 测试部分。

首先删除现有的 PHP 包。出现提示时,按 y 并按 Enter 继续。

  1. sudo yum remove php-fpm php-cli php-common

从 IUS 安装新的 PHP 7 包。再次,在出现提示时按 y 和 Enter。

  1. sudo yum install php70u-fpm-nginx php70u-cli php70u-mysqlnd

安装完成后,您需要对 PHP-FPM 和 Nginx 进行一些配置更改。按照配置,PHP-FPM 监听本地 TCP 套接字上的连接,而 Nginx 需要一个 Unix 域套接字,它映射到文件系统上的路径。

PHP-FPM 可以处理多个子进程池。按照配置,它提供了一个名为 www 的池,它在 /etc/php-fpm.d/www.conf 中定义。使用 nano(或您喜欢的文本编辑器)打开此文件:

  1. sudo nano /etc/php-fpm.d/www.conf

查找包含 listen=127.0.0.1:9000 的块,它告诉 PHP-FPM 在端口 9000 上侦听环回地址。用分号注释这一行,并取消注释 listen=/在下面的几行中运行/php-fpm/www.sock。

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
;                            a specific port;
;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses
;                            (IPv6 and IPv4-mapped) on a specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
;listen = 127.0.0.1:9000
; WARNING: If you switch to a unix socket, you have to grant your webserver user
;          access to that socket by setting listen.acl_users to the webserver user.
listen = /run/php-fpm/www.sock

接下来,查找包含 listen.acl_users 值的块,并取消注释 listen.acl_users=nginx:

; When POSIX Access Control Lists are supported you can set them using
; these options, value is a comma separated list of user/group names.
; When set, listen.owner and listen.group are ignored
;listen.acl_users = apache,nginx
;listen.acl_users = apache
listen.acl_users = nginx
;listen.acl_groups =

退出并保存文件。在 nano 中,您可以通过按 Ctrl-X 退出,按 y 确认,然后按 Enter 确认要覆盖的文件名来完成此操作。

接下来,确保 Nginx 使用正确的套接字路径来处理 PHP 文件。首先打开 /etc/nginx/conf.d/default.conf:

  1. sudo nano /etc/nginx/conf.d/php-fpm.conf

php-fpm.conf定义了一个upstream,可以被其他Nginx配置指令引用。在上游块中,使用#注释掉server 127.0.0.1:9000;,并取消注释server unix:/run/php-fpm/www袜子;:

# PHP-FPM FastCGI server
# network or unix domain socket configuration

upstream php-fpm {
        #server 127.0.0.1:9000;
        server unix:/run/php-fpm/www.sock;
}

退出并保存文件,然后打开/etc/nginx/conf.d/default.conf:

  1. sudo nano /etc/nginx/conf.d/default.conf

查找以 location ~ \.php${ 开头的块。在此块中,查找 fastcgi_pass 指令。注释掉或删除这一行,将其替换为fastcgi_pass php-fpm,它将引用php-fpm.conf中定义的上游:

  location ~ \.php$ {
      try_files $uri =404;
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      # fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
      fastcgi_pass php-fpm;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
  }

退出并保存文件,然后重启 PHP-FPM 和 Nginx,使新的配置指令生效:

  1. sudo systemctl restart php-fpm
  2. sudo systemctl restart nginx

您可以使用 systemctl 检查每个服务的状态:

  1. systemctl status php-fpm
  2. systemctl status nginx

测试PHP

配置 Web 服务器并安装新包后,我们应该能够验证 PHP 是否已启动并正在运行。首先在命令行检查已安装的 PHP 版本:

  1. php -v
PHP 7.0.1 (cli) (built: Dec 18 2015 16:35:26) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies

您还可以在 Web 服务器的文档根目录中创建一个测试文件。尽管其位置取决于您的服务器配置,但文档根目录通常设置为以下目录之一:

  • /var/www/html
  • /var/www/
  • /usr/share/nginx/html

使用 nano,在文档根目录中打开一个名为 info.php 的新文件。默认情况下,在 Apache 上,这将是:

  1. sudo nano /var/www/html/info.php

在 Nginx 上,您可以改为使用:

  1. sudo nano /usr/share/nginx/html/info.php

粘贴以下代码:

<?php
phpinfo();

退出编辑器,保存 info.php。现在,在您的浏览器中加载以下地址:

http://server_domain_name_or_IP/info.php

您应该会看到 PHP 7 信息页面,其中列出了运行版本和配置。仔细检查后,删除 info.php 是最安全的:

  1. sudo rm /var/www/html/info.php

您现在已经安装了一个有效的 PHP 7。从这里,您可能想查看 Erika Heidi 的官方迁移指南。

©2015-2025 艾丽卡 support@alaica.com