引言

PHP编译安装。

我这里的安装是按照最小权限原则进行的(即安装时尽量使用非root权限进行,有些特殊操作需要就用sudo提权)

目录确定

如果你的目录跟我设置的目录不一致,请按你的来,不要太过迷信我的目录结构

名称路径
php安装目录/server/php/8.3.0/
配置文件目录/server/php/8.3.0/etc
源码包存放目录/server/data/packages/php-8.3.0/

传送门

# 补充依赖
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

# 预编译
# 下面需要修改的值有:
# 1. 你的PHP安装目录
# 2. PHP配置文件所在目录
# 3. Fast-cgi进程管理器的用户名
# 4. Fast-cgi进程管理器的用户组名

./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

# 编译及测试(test如果不通过,但能够正常使用的话,可以跳过)
make
make test

# 安装
make install

修订记录

序号修订日期修订内容
12023.12.16初始
22023.12.18补充预编译参数:zlibopensslpdo-mysql
32023.12.19补充预编译参数:curl
42023.12.20修改预编译参数:--enable-gd 改为 --with-gd
52023.12.25补充oniguruma依赖安装

一、官网找到合适的版本

首先打开浏览器,输入网址 https://php.net

PHP官网

这个页面就是 php的官网页面了,点击 Download按钮或者顶部的 Downloads菜单进入版本选择界面。

选择8.3.0版本

我们需要选择一个版本进行编译安装。

今天这里选择的是最新版本——8.3.0

右击 php-8.3.0.tar.gz,选择复制链接按钮。

复制下载链接

二、下载并上传到服务器上

这里有多种方式传到服务器上,你可以:

  1. 先下载到你自己的电脑上(windows电脑或 ios电脑均可),然后通过工具或命令上传到服务器上
  2. 直接 ssh进入服务器,用 wget等方式直接下载

我这里选的是方式2,具体可以查看我另一篇文章

https://hw13.cn/186.html

使用命令

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

进入源码目录

三、编译与安装

在开始安装之前,我们需要先进行依赖的安装

tip:我这里的依赖内容可能会比较多,但包多了不报错啊~

包含 MySQLphp的所有相关依赖

如果想看MySQL安装的教程,欢迎移步另一篇文章:

https://hw13.cn/145.html

1. 安装依赖

先执行下面的命令,进行依赖的安装

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

安装完成后,我们就可以开始编译了。

2. 预编译

下面是预编译命令:

./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库作为图像处理,还有 mysqli作为连接 MySQL的工具扩展。

当然,你也可以在编译安装完成后,自行安装扩展。

预编译完成

看到这个 Think you就代表预编译完成了。

3. 编译

然后输入 make指令进行编译

如果你编译的服务器内存不足的话,表现出来的效果就是编译过程贼慢,而且中途会卡死,ssh都无法登录。

解决方法是在刚刚的预编译脚本最后增加 --disable-fileinfo参数,禁用文件信息处理扩展。

回头安装完成后,再把这个部分补充上就行了。

开始编译

(友情建议,如果你服务器性能不怎么样的话,最好不要用 CMD的方式连接 SSH,否则很容易超时断线,用工具连接会自动配置长时间连接的参数)

等待N久之后,就能看到编译成功的模样了。

编译成功

4. 测试(可选)

可以输入 make test命令进行编译结果测试。

编译测试

等待一会就有结果了。

5. 安装

输入指令 make install进行安装

安装php

php的安装还是比较快的

6. 配置到全局(可选)

输入命令:

sudo ln -s 你的php安装目录/bin/php /usr/local/bin/php

我这里做了一个软连接,将你的 php脚本文件,放到了用户执行脚本下,这样在任何用户账号下,都可以正常访问 php

7. 处理 php的配置文件

这里还缺少一步,就是创建我们的 php配置文件——php.ini

这个文件很重要,关系到以后生产环境用到的所有设置信息,包括扩展和其他内容,都需要从这里读取配置。

好在,php官网考虑到这个问题了,在源码包内给我们提供了一个示例文件(php.ini-production),我们如果要求不高的话,可以直接拷贝过去。

使用命令:

cp /server/data/packages/php-8.3.0/php.ini-production /server/php/8.3.0/etc/php.ini

我这里是用的我的目录,你用的话,需要替换为你自己的目录信息。

复制好之后,可以使用脚本命令输出当前配置文件路径:

php --ini

可以看到输出了当前的配置目录列表:

读取配置文件路径

四、测试

1. 输出 PHP版本

输入命令 php --version即可输出当前 php版本

当然,如果你没有执行我上面说的 3.6步骤的话,那你很可能找不到这个命令,将上述的 php替换为你的脚本文件路径即可。

例如:/server/php/8.3.0/bin/php --version

输出当前版本

2. 查看 php已安装的扩展

输入命令:

php -m

可以看到当前已安装的扩展列表。

已安装的php扩展列表

五、启动 PHP-FPM服务

首先,进入 php的安装目录下,找到 安装目录/sbin/php-fpm文件

使用 root权限进行启动

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

启动php-fpm


欢迎关注拓行公众号,分享各种技术博客文章

拓行——奋勇进取,开拓未来,砥砺前行

最后修改:2024 年 03 月 26 日
如果您对各种技术博客文章感兴趣,欢迎关注拓行公众号,分享各种专业技术知识~