CentOS7使用源码安装PHP8教程整理
-
- 下载安装包
- [解压下载的php tar源码包](#解压下载的php tar源码包)
- 安装所需的一些依赖扩展库
- 安装前的配置
- 修改配置文件
- 配置环境变量
- 开机自启
- 启动服务
- 创建软连接
- 常见问题
-
- [1、checking for icu-uc >= 50.1 icu-io icu-i18n... no](#1、checking for icu-uc >= 50.1 icu-io icu-i18n... no)
- [2、configure: error: Package requirements (oniguruma) were not met:](#2、configure: error: Package requirements (oniguruma) were not met:)
- [3、configure: error: Cannot find libtidy](#3、configure: error: Cannot find libtidy)
- [4、configure: error: Package requirements (libxslt >= 1.1.0) were not met:](#4、configure: error: Package requirements (libxslt >= 1.1.0) were not met:)
- [5、error: Package requirements (sqlite3 > 3.7.4) were not met:](#5、error: Package requirements (sqlite3 > 3.7.4) were not met:)
下载安装包
有多个安装版本,根据自己的需求可以下载php8的各个版本
bash
wget https://www.php.net/distributions/php-8.3.16.tar.gz
解压下载的php tar源码包
bash
tar -zxvf php-8.3.16.tar.gz
安装所需的一些依赖扩展库
bash
yum -y install libxml2* openssl* libcurl* libjpeg* libpng* freetype* libmcrypt*
安装前的配置
bash
cd php-8.3.16
进入目录,执行以下命令
bash
./configure --prefix=/usr/local/php8 --with-config-file-path=/usr/local/php8/etc --enable-fpm --enable-mysqlnd --with-fpm-user=nginx --with-fpm-group=nginx --with-curl --enable-gd --with-tidy --with-gettext --enable-intl --with-kerberos --with-libdir=lib64 --with-mysqli --enable-ftp --with-openssl --with-pdo-mysql --with-pdo-sqlite --with-pear --disable-fileinfo --with-xsl --with-zlib --with-bz2 --with-mhash --enable-bcmath --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-calendar --enable-exif
看到这张图,表示执行成功,如果没有,就解决error
继续执行以下命令
bash
make && make install
执行到这里,表示执行成功了
修改配置文件
1、进入php8的安装包
bash
cd php-8.3.16/
cp -a php.ini-production /usr/local/php8/etc/php.ini

进入安装目录
bash
cd /usr/local/php8/etc
cp -a php-fpm.conf.default php-fpm.conf
cd /usr/local/php8/etc/php-fpm.d
cp www.conf.default www.conf
修改www.conf文件
修改端口号,9000 为9001,因为我有两个php版本,还有一个php7
bash
listen = 127.0.0.1:9001
listen.owner = nginx
listen.group = nginx
listen.mode = 0666

配置环境变量
我这里是两个php版本,所以就又增加了一个php8
bash
PATH=$PATH:/usr/local/php7/bin:/usr/local/php7/sbin/:/usr/local/php8/bin:/usr/local/php8/sbin/
保存环境变量,并执行以下命令,让其生效
bash
source /etc/profile
开机自启
bash
# 源码包 php-8.0.24/sapi/fpm
cd ./php-8.3.16/sapi/fpm
cp php-fpm.service /usr/lib/systemd/system/php-fpm-8.3.16.service
cp init.d.php-fpm /etc/init.d/php8-fpm
chmod +x /etc/init.d/php8-fpm
启动服务
bash
service php8-fpm start
service php8-fpm stop
service php8-fpm restart
创建软连接
bash
ln -s /usr/local/php8/bin/php /usr/local/bin/php8

常见问题
1、checking for icu-uc >= 50.1 icu-io icu-i18n... no

bash
checking for icu-uc >= 50.1 icu-io icu-i18n... no
configure: error: Package requirements (icu-uc >= 50.1 icu-io icu-i18n) were not met:
No package 'icu-uc' found
No package 'icu-io' found
No package 'icu-i18n' found
解决方案:
bash
yum -y install libicu-devel
2、configure: error: Package requirements (oniguruma) were not met:

bash
checking whether to enable multibyte regex support (requires oniguruma)... yes
checking for oniguruma... no
configure: error: Package requirements (oniguruma) were not met:
No package 'oniguruma' found
解决方案:
bash
yum -y install oniguruma oniguruma-devel
3、configure: error: Cannot find libtidy
bash
yum -y install libtidy-devel
4、configure: error: Package requirements (libxslt >= 1.1.0) were not met:
bash
yum -y install libxslt-devel
5、error: Package requirements (sqlite3 > 3.7.4) were not met:
bash
yum install sqlite-devel