引言

源码编译安装php3.8.0版本,建议使用普通用户来搭建,有些操作需要用sudo提权,如果提示没有权限

提示没有权限

可以参考一下我的这篇文章:普通用户无法使用sudo

如果已经搭建过,有信心的,可以直接看这个,不用看下面啦

下面文件目录是我自己的目录,你们可以改成自己想要的

# 安装依赖
sudo yum -y install cmake gcc g++ ncurses-devel libtirpc-devel rpcgen libxml2-devel sqlite-devel libpng-devel epel-release oniguruma oniguruma-devel

# 下载安装包(v8.3.0)
wget https://www.php.net/distributions/php-8.3.0.tar.gz

# 解压
tar -xzvf php-8.3.0.tar.gz

# 进入目录
cd php-8.3.0

# 预编译
./configure \
--prefix=你的PHP安装目录 \
--with-config-file-path=你的PHP配置文件所在目录 \
--enable-fpm \
--with-gd \
--enable-gd-jis-conv \
--enable-mysqlnd \
--enable-mbstring \
--with-openssl \
--with-zlib \
--with-curl \
--with-pdo-mysql \
--with-fpm-user=Fast-cgi进程管理器的用户名 \
--with-fpm-group=Fast-cgi进程管理器的用户组名 \
--with-mysqli

# 编译
make

# 安装
make install

下载安装包

首先进入php的官网下载页面:点击跳转

php的官网

进入之后,选择想要的版本后,右键该版本的.tar.gz安装包,然后复制链接,我这里选择的是8.3.0版本

上传服务器

有两种选择

一、下载安装包在自己电脑,然后通过sftp等工具上传到服务器,具体可以参考一下这位大佬的文章:渔鸥篝火

二、直接在服务器用wget等工具安装

我这选择的是第二种,首先建议创建一个存放数据安装包的目录,创建并进入

mkdir /server/sourceCode && cd /server/sourceCode

然后使用wget命令下载安装包

wget https://www.php.net/distributions/php-8.3.0.tar.gz

然后使用命令解压

tar -zxvf php-8.3.0.tar.gz

查看目录文件,然后进入这个文件

查看目录文件

编译安装

安装依赖

在安装之前,选把需要的依赖安装好,这里的依赖也包括了mysql需要的

sudo yum -y install cmake gcc g++ ncurses-devel libtirpc-devel rpcgen libxml2-devel sqlite-devel libpng-devel oniguruma-devel

预编译

预编译命令

./configure \
--prefix=你的PHP安装目录 \
--with-config-file-path=PHP配置文件所在目录 \
--enable-fpm \
--with-gd \
--enable-gd-jis-conv \
--enable-mysqlnd \
--enable-mbstring \
--with-openssl \
--with-curl \
--with-zlib \
--with-pdo-mysql \
--with-fpm-user=Fast-cgi进程管理器的用户名 \
--with-fpm-group=Fast-cgi进程管理器的用户组名 \
--with-mysqli

这里面有 FPM作为进程管理器,图像处理 GD库,还有连接 MySQL的工具扩展 mysqli

如果你的服务器配置不是很好,建议先禁用infofile扩展,这个是禁用文件信息处理扩展,在后面加入这个命令就可以

--disable-infofile

然后在编译完成后在安装infofile扩展

预编译过程中遇到了这个错误

预编译报错

这个报错是说缺少openssl这个包,使用这个命令下载

sudo yum install openssl-devel

下载完成后,重新编译,如果过程中再遇到这种错误,重复这个操作安装缺少的包即可

看到这个,就说明预编译成功啦

预编译成功

如果提示configure: WARNING: unrecognized options: --with-gd,输入这个重新编译一下gd就行

./configure \
--prefix=/server/php/8.3.0 \
--with-config-file-path=/server/php/8.3.0/etc \
--enable-fpm \
--enable-gd \
--enable-gd-jis-conv \
--enable-mysqlnd \
--enable-mbstring \
--with-openssl \
--with-curl \
--with-zlib \
--with-pdo-mysql \
--with-fpm-user=xunji \
--with-fpm-group=xunji \
--with-mysqli

编译

输入命令

make

如果在编译过程中,遇到错误,例如:

编译报错信息

如果服务器性能差,建议重新预编译先禁用infofile扩展,解决问题后先清除上一次编译

make clean

然后再次输入make重新编译

编译成功

看到这个就说明已经编译成功

测试及安装

测试这个可以弄也可以不弄,输入命令进行测试

make test

等会就可以看到结果了

编译测试结果

输入命令进行安装

make install

配置文件

建立软连接,将php脚本文件,放到用户执行脚本下

sudo ln -s /server/php/8.3.0/bin/php /usr/local/bin/php

这样子在任何用户账号下,都可以正常访问 php

创建php配置文件-php.ini,在以后用到的所有设置信息、包括扩展和其他内容等,都需要从这个文件读取配置,在源码包有一个php.ini-production文件,如果你对这个配置文件没什么要求的话,可以直接把这个文件的内容拷贝过去

cp /server/sourceCode/php-8.3.0/php.ini-production /server/php/8.3.0/etc/php.ini

创建好文件后,可以使用脚本命令输出当前配置文件路径

php --ini

php配置文件输出

看到这个就说明配置成功了

启动测试

输入命令当前 php版本

php --version

如果你没有按上面的将php脚本文件,放到用户执行脚本下,你很可能找不到这个命令,可以输入这个查看

/server/php/8.3.0/bin/php --version

查看已安装的扩展

输入命令:

php -m

php安装的扩展

启动服务

使用 root权限进行启动

sudo /server/php/8.3.0/sbin/php-fpm

在启动时发现了错误

php启动服务报错

这个的意思是找不到文件,输入这两个命令即可

cp /server/php/8.3.0/etc/php-fpm.conf.default /server/php/8.3.0/etc/php-fpm.conf

cp /server/php/8.3.0/etc/php-fpm.d/www.conf.default /server/php/8.3.0/etc/php-fpm.d/www.conf

重新启动服务

启动php服务成功

看到这个说明你的服务已经起了

到这里已经安装好啦,Goodbye~

最后修改:2024 年 09 月 17 日
如果觉得我的文章对你有用,请随意赞赏