在 Centos 上将 PHP 7.0 升级到 7.2

在 Centos 上将 PHP 7.0 升级到 7.2

我有一个运行 PHP 7.0 的生产服务器,我想升级到 7.2。

我在网上没有找到任何表明 PHP7.0 和 7.2 可以共存的信息。正确的步骤是什么?只需删除所有 php70w* 包并安装所有 php72w 包?

这是一个生产服务器,错误一定不能导致它失败。

谢谢。

答案1

这是针对 CentOS 6.x 和 7.x 的解决方案:

yum install epel-release

然后安装 Remi repo,适用于 Centos 6.x:

rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-6.rpm

对于 Centos 7.x:

rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm

检查安装了哪些 PHP 包:

yum list installed php*

删除当前 PHP:

yum remove php*

使用 PHP 7.2 安装与 7.0 相同的软件包,例如:

yum install --enablerepo=remi-php72 php php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo

检查安装的 PHP 版本:

php -v

您不需要在您的服务器上同时使用 PHP 7.0 和 7.2。如果您在使用 PHP 7.2 时遇到问题,您可以随时重新安装旧版 PHP 7.0。如果不确定它是否适合您在生产服务器上工作,请先在虚拟机上尝试。但它在许多生产服务器上对我都有效。PHP 不是关键的操作系统组件,因此即使 PHP 发生变化,服务器也永远不会失败。只是您的 Web 应用程序在更改为 7.2 时可能会失败,但正如我所写,这种情况不太可能发生,如果发生这种情况,您可以重新安装旧版本。

我忘记了 php.ini。如果您想在另一个 PHP 版本中保留您的 php.ini 自定义设置,请在运行 yum remove php* 之前复制 php.ini。在 PHP 重新安装后,diff saved_php.ini php.ini 并查看需要合并的内容。

答案2

是的,您可以同时安装多个版本的 PHP,无需构建任何东西,只需使用 RPM 包。

这正是设计软件集合的原因。

看:PHP 配置提示(关于切换到 FPM 并使用最新和/或多个 php 版本的软件集合)

对于 PHP 7.2 集合,另请参阅配置向导(并选择多个版本)

但是,事实上,如果您认为单个版本就足够了,那么来自@NoAngel 的解决方案也有效,特别是当您有一个测试环境时。

答案3

是的,您可以同时保留多个版本。现在您的服务器上有 7.0,因此您可以从 php 官方网站下载源代码并将其构建到另一个位置。

您还可以使用 mod_fcgid 或 php-fpm 来执行新版 php 的 PHP Web 应用程序。您可以参考以下步骤从源代码构建 php。

  1. 从 php 官方镜像下载 php 源档案。
  2. 在您的服务器中提取档案,然后将目录更改为提取的目录。
  3. 安装构建所需的依赖项

yum 安装 libxml2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel libicu-devel gcc-c++ libxslt-devel net-snmp-devel readline-devel aspell-devel unixODBC-devel libc-client-devel freetype-devel libvpx-devel enchant-devel libmcrypt-devel krb5-devel libtidy-devel bzip2-devel

  1. 使用以下命令来配置和构建 PHP。

./configure --prefix=/usr/local/php --enable-mbstring --with-curl --with-openssl --with-xmlrpc --enable-soap --enable-zip --with-gd --with-jpeg-dir --with-png-dir --with-mysqli --with-freetype-dir --enable-intl --with-xsl --with-mcrypt --with-zlib --enable-bcmath --enable-dba --enable-calendar --enable-exif --enable-ftp --enable-pcntl --enable-shmop --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --enable-opcache --with-gettext --with-bz2 --with-mhash --with-readline --with-tidy --with-libdir=lib64

注意:如果要更改安装目录,您可以更改前缀。

制作&&制作安装

它将把 PHP 二进制文件和库安装到您在 configure 命令中提到的前缀目录中。

  1. 现在安装mod_fcgidApache 中的模块使用新版本执行 PHP 脚本

yum 安装 mod_fcgid

在 cgi-bin 目录(可能的路径是 /var/www/cgi-bin)中创建一个名为 php-fcgi 的文件,并添加以下内容。

#!/bin/sh
PHPRC=/etc/
export PHPRC
export PHP_FCGI_MAX_REQUESTS=5000
export PHP_FCGI_CHILDREN=0
exec  /usr/local/php/bin/php-cgi

为cgi文件分配执行权限。

AddHandler php7-fastcgi .php
Action php7-fastcgi /cgi-bin/php-fcgi
Options -Indexes +FollowSymLinks +ExecCGI
DirectoryIndex index.php

<IfModule mod_fcgid.c>
         FcgidIdleTimeout 3600
         FcgidProcessLifeTime 3600
         FcgidBusyTimeout 3600
         FcgidIOTimeout 3699
         FcgidConnectTimeout 20
</IfModule>

现在,您可以将此处理程序用于任何想要使用最新 PHP 版本的虚拟主机。


在生产中执行此操作之前,您必须在本地/开发系统上尝试此操作以避免任何意外错误。还./configure --help 可以帮助您选择当前在生产服务器上使用的 php 模块。

答案4

Remi repo 说明链接如下。例如,如果您有 CentOS 版本 7.4,则在命令行中:

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm
yum install yum-utils
yum-config-manager --enable remi-php72
yum update

PHP 的所有未来更新都将针对版本 7.2。

https://blog.remirepo.net/post/2017/12/04/Install-PHP-7.2-on-CentOS-RHEL-or-Fedora

相关内容