我有一个运行 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
答案3
是的,您可以同时保留多个版本。现在您的服务器上有 7.0,因此您可以从 php 官方网站下载源代码并将其构建到另一个位置。
您还可以使用 mod_fcgid 或 php-fpm 来执行新版 php 的 PHP Web 应用程序。您可以参考以下步骤从源代码构建 php。
- 从 php 官方镜像下载 php 源档案。
- 在您的服务器中提取档案,然后将目录更改为提取的目录。
- 安装构建所需的依赖项
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
- 使用以下命令来配置和构建 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 命令中提到的前缀目录中。
- 现在安装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