引言
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
修订记录
序号 | 修订日期 | 修订内容 |
---|---|---|
1 | 2023.12.16 | 初始 |
2 | 2023.12.18 | 补充预编译参数:zlib 、openssl 、pdo-mysql |
3 | 2023.12.19 | 补充预编译参数:curl |
4 | 2023.12.20 | 修改预编译参数:--enable-gd 改为 --with-gd |
5 | 2023.12.25 | 补充oniguruma 依赖安装 |
一、官网找到合适的版本
首先打开浏览器,输入网址 https://php.net
这个页面就是 php
的官网页面了,点击 Download
按钮或者顶部的 Downloads
菜单进入版本选择界面。
我们需要选择一个版本进行编译安装。
今天这里选择的是最新版本——8.3.0
右击 php-8.3.0.tar.gz
,选择复制链接按钮。
二、下载并上传到服务器上
这里有多种方式传到服务器上,你可以:
- 先下载到你自己的电脑上(
windows
电脑或ios
电脑均可),然后通过工具或命令上传到服务器上 - 直接
ssh
进入服务器,用wget
等方式直接下载
我这里选的是方式2,具体可以查看我另一篇文章
使用命令
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:我这里的依赖内容可能会比较多,但包多了不报错啊~
包含
MySQL
和php
的所有相关依赖如果想看MySQL安装的教程,欢迎移步另一篇文章:
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
的安装还是比较快的
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-FPM
服务
首先,进入 php
的安装目录下,找到 安装目录/sbin/php-fpm
文件
使用 root
权限进行启动
sudo /server/php/8.3.0/sbin/php-fpm