编译升级PHP 7.4.0

备份当前版本

安全第一,不忘备份

which php
/usr/local/php/bin/php
cp -r /usr/local/php /usr/local/php_bak

获取当前 PHP 配置参数

我是直接在历史命令里面找到的:
history |grep configure
如果你找不到就执行如下命令找:

/usr/local/php/bin/php -i | head

总之,我们需要的就是下面的东西:

./configure --prefix=/usr/local/php --enable-opcache --with-config-file-path=/usr/local/php/etc --with-curl --enable-fpm --with-gd --with-iconv --enable-mbstring --with-mysqli=mysqlnd --with-openssl --enable-static --enable-sockets --enable-inline-optimization --with-zlib --disable-ipv6 --disable-fileinfo --disable-debug

这里要注意,气死你的PHP版本里面(7.4.0)已经不支持“--with-gd”,得改成“--enable-gd”,否则会报错“GD Library Error: imagecreatetruecolor does not exist - please contact your webhost and ask them to install the GD library
”所以最终我们得到的配置参数为:

./configure --prefix=/usr/local/php --enable-opcache --with-config-file-path=/usr/local/php/etc --with-curl --enable-fpm --enable-gd --with-iconv --enable-mbstring --with-mysqli=mysqlnd --with-openssl --enable-static --enable-sockets --enable-inline-optimization --with-zlib --disable-ipv6 --disable-fileinfo --disable-debug

下载PHP

从 https://www.php.net/downloads.php 页面下载 PHP 的最新 Stable 版本,解压缩,进入源码目录。

wget https://www.php.net/distributions/php-7.4.0.tar.gz
tar xf php-7.4.0.tar.gz 
cd php-7.4.0

配置PHP

在编译之前,需要进入源代码目录,对要安装的程序进行各种参数配置,比如安装到什么地方,需要开启哪些功能等。配置工作一般都由源码目录中的configure脚本完成。

./configure --prefix=/usr/local/php --enable-opcache --with-config-file-path=/usr/local/php/etc --with-curl --enable-fpm  --enable-gd --with-iconv --enable-mbstring --with-mysqli=mysqlnd --with-openssl --enable-static --enable-sockets --enable-inline-optimization --with-zlib --disable-ipv6 --disable-fileinfo --disable-debug

error: Package requirements (sqlite3 > 3.7.4) were not met

error: Package requirements (sqlite3 > 3.7.4) were not met
No package 'sqlite3' found
若看到上面的报错,非常简单:
yum install libsqlite3x-devel -y

error: Package requirements (oniguruma) were not met

error: Package requirements (oniguruma) were not met
No package 'oniguruma' found
若看到上面的报错,非常简单:
yum install oniguruma-devel -y

编译PHP

刚才的配置通过后,直接运行 make 进行编译。

安装PHP

刚才的编译通过后,先停止PHP-FPM服务:
systemctl stop php-fpm
然后运行 make install 进行安装,安装成功后,我们得改下php.ini文件,该文件里面的
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/opcache.so"
改成:
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/opcache.so"
最后启动PHP-FPM服务:
systemctl start php-fpm
进入你的网站根目录执行:
echo "<?php phpinfo() ?>" >d.php
然后访问 https://yoursite.com/d.php 来检测此处升级的结果,确认升级成功后记得删除 d.php

更详细的安装步骤请查看:
Centos 6.5 x64安装php 7.2
PHP-FPM没有生成socket文件

原创文章,转载请注明: 转载自笛声

本文链接地址: 编译升级PHP 7.4.0

12 条评论

  • 张波博客 2019年11月29日 回复

    版本太高了,会不会有些源码不能用了?

    • dige 2019年11月30日 回复 作者

      我已经升级到7.4.0了,目前一切正常,只是新的预处理特性还没用起来。一般都向下兼容的,不会出现源码不能用。

  • 龙笑天 2019年11月29日 回复

    666 按上文实操解决了~ PHP7.4改动还不小...

  • 姜辰 2019年11月30日 回复

    phpinfo()

    是不是少了一个;?

    • dige 2019年11月30日 回复 作者

      在这里少了也没问题,总共才一行。

  • 西枫里博客 2019年12月12日 回复

    你这速度已经超过我这个用PHP吃饭的人了~

  • 哥斯拉 2019年12月17日 回复

    我也想升级,可惜的是我的程序不支持php7.4

  • lgz 2020年1月6日 回复

    秀啊,缺俩包刚好解决

  • hxy 2020年3月1日 回复

    博主优秀,困扰我的问题解决了,之前找的帖子都不行,万分感谢!!!

  • Centos 7服务器php 5.6 升级到php 7.4.0 – 缘分人偶 2020年4月7日 回复

    […] 编译升级PHP 7.4.0 出自 笛声 […]

  • CommandNotFound ⚡️ 坑否 2020年7月2日 回复

    不错,刚好解决问题!

  • stdworkflow 2021年7月12日 回复

    完美

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Copyright © 2015-2024 笛声博客 All Rights Reserved     浙ICP备15036123号-1