CentOS7 编译安装 PHP7.4

淺唱寂寞╮ 提交于 2021-01-12 05:02:44
# 需要注意的是 PHP7.4 舍弃了 `imagettftext` 函数,所以在升级到 PHP7.4 前,需要清楚所使用的框架和项目
# 中有没有使用到这类被舍弃的函数,所以如果是生产服务器的话需要谨慎升级,但仅仅是自己弄着玩的话就随便了

## 方法 1
## 卸载原有版本 PHP 再重新安装,但这样的话原有 PHP 的相关配置内容就需要重新设置

# 查看需要卸载那些内容
rpm -qa | grep php
rpm -e php70w-7.0.33-1.w7.x86_64  # 卸载命令

## 方法 2
## 升级安装,这样就不需要卸载原有安装的 PHP 版本,可以少做很多内容
# 获取原有版本配置项内容,共有三种方式获取
history |grep configure            # 查看历史记录
/usr/local/php/bin/php -i | head   # 如果历史记录没有找到,可以用此命令查看
vim /usr/local/php/bin/php-config  # 可以直接查看 PHP 的配置文件

# 通过命令我可以查到我原有配置内容为,可能每个人安装的配置内容可能都不一定相同,但基本配置项是不会少的
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-zlib-dir \
--enable-mbstring \
--enable-xmlreader \
--enable-xmlwriter \
--enable-soap \
--enable-calendar \
--with-curl \
--with-zlib \
--with-gd \                 # 7.4 后不再支持这种写法,所以需要改为 --enable-gd
--with-pdo-sqlite \
--with-pdo-mysql \
--with-mysqli \
--with-mysql-sock \
--enable-mysqlnd \
--disable-rpath \
--enable-inline-optimization \
--with-bz2 \
--with-zlib \
--enable-sockets \
--enable-sysvsem \
--enable-sysvshm \
--enable-pcntl \
--enable-mbregex \
--enable-exif \
--enable-bcmath \
--with-mhash \
--with-openssl \
--enable-ftp \
--with-kerberos \
--with-gettext \
--with-xmlrpc \
--with-xsl \
--enable-fpm \
--with-fpm-user=php-fpm \
--with-fpm-group=php-fpm \
--with-fpm-systemd \
--disable-fileinfo

# 下载 PHP7.4 这个直接再到 PHP官网(https://www.php.net/downloads.php)去下载就可以
# 下载成功后解压,并进入源码目录进行配置我们上面获取到的配置内容(直接拷贝下来安装)
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc...

## 配置的时候可能会报下面两个错误
# `error: Package requirements (sqlite3 > 3.7.4) were not met`
# 这是因为 sqlite 版本低了,升级版本可以解决
yum -y install libsqlite3x-devel

# `error: Package requirements (oniguruma) were not met`
yum -y install oniguruma-devel

## 完成后编译安装
make && make install

# 现在就已经升级完成了,完成后重启 php-fpm 就可以看到 PHP 的版本已经升级到 7.4 了
systemctl restart php-fpm.service
php -v
PHP 7.4.0 (cli) (built: Dec  6 2019 11:02:46) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!