Loading... ### 引言 PHP编译安装。 我这里的安装是按照最小权限原则进行的(即安装时尽量使用非`root`权限进行,有些特殊操作需要就用`sudo`提权) #### 目录确定 如果你的目录跟我设置的目录不一致,请按你的来,不要太过迷信我的目录结构 | 名称 | 路径 | | -------------- | -------------------------------- | | php安装目录 | /server/php/8.3.0/ | | 配置文件目录 | /server/php/8.3.0/etc | | 源码包存放目录 | /server/data/packages/php-8.3.0/ | #### 传送门 ```shell # 补充依赖 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官网](https://aliyun-yuesha-public-oss.oss-cn-zhangjiakou.aliyuncs.com/usr/uploads/2023/12/2425748826.png) 这个页面就是 `php`的官网页面了,点击 `Download`按钮或者顶部的 `Downloads`菜单进入版本选择界面。 ![选择8.3.0版本](https://aliyun-yuesha-public-oss.oss-cn-zhangjiakou.aliyuncs.com/usr/uploads/2023/12/1248653632.png) 我们需要选择一个版本进行编译安装。 今天这里选择的是最新版本——`8.3.0` 右击 `php-8.3.0.tar.gz`,选择复制链接按钮。 ![复制下载链接](https://aliyun-yuesha-public-oss.oss-cn-zhangjiakou.aliyuncs.com/usr/uploads/2023/12/501403516.png) ### 二、下载并上传到服务器上 这里有多种方式传到服务器上,你可以: 1. 先下载到你自己的电脑上(`windows`电脑或 `ios`电脑均可),然后通过工具或命令上传到服务器上 2. 直接 `ssh`进入服务器,用 `wget`等方式直接下载 我这里选的是方式2,具体可以查看我另一篇文章 [https://hw13.cn/186.html](https://hw13.cn/186.html) 使用命令 ```shell wget https://www.php.net/distributions/php-8.3.0.tar.gz ``` 下载到服务器上。 然后使用命令进行解压 ```shell tar -xzvf php-8.3.0.tar.gz ``` 如图所示 ![下载到服务器上并解压](https://aliyun-yuesha-public-oss.oss-cn-zhangjiakou.aliyuncs.com/usr/uploads/2023/12/3453202973.png) 然后进入此目录内 `cd php-8.3.0` ![进入源码目录](https://aliyun-yuesha-public-oss.oss-cn-zhangjiakou.aliyuncs.com/usr/uploads/2023/12/124452618.png) ### 三、编译与安装 在开始安装之前,我们需要先进行依赖的安装 > tip:我这里的依赖内容可能会比较多,但包多了不报错啊~ > > 包含 `MySQL`和 `php`的所有相关依赖 > > 如果想看MySQL安装的教程,欢迎移步另一篇文章: > > [https://hw13.cn/145.html](https://hw13.cn/145.html) #### 1. 安装依赖 先执行下面的命令,进行依赖的安装 ```shell sudo yum -y install cmake gcc g++ ncurses-devel libtirpc-devel rpcgen libxml2-devel sqlite-devel libpng-devel oniguruma-devel ``` 安装完成后,我们就可以开始编译了。 #### 2. 预编译 下面是预编译命令: ```shell ./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`的工具扩展。 当然,你也可以在编译安装完成后,自行安装扩展。 ![预编译完成](https://aliyun-yuesha-public-oss.oss-cn-zhangjiakou.aliyuncs.com/usr/uploads/2023/12/877758277.png) 看到这个 `Think you`就代表预编译完成了。 #### 3. 编译 然后输入 `make`指令进行编译 如果你编译的服务器内存不足的话,表现出来的效果就是编译过程贼慢,而且中途会卡死,`ssh`都无法登录。 解决方法是在刚刚的预编译脚本最后增加 `--disable-fileinfo`参数,禁用文件信息处理扩展。 回头安装完成后,再把这个部分补充上就行了。 ![开始编译](https://aliyun-yuesha-public-oss.oss-cn-zhangjiakou.aliyuncs.com/usr/uploads/2023/12/2843168423.png) (友情建议,如果你服务器性能不怎么样的话,最好不要用 `CMD`的方式连接 `SSH`,否则很容易超时断线,用工具连接会自动配置长时间连接的参数) 等待N久之后,就能看到编译成功的模样了。 ![编译成功](https://aliyun-yuesha-public-oss.oss-cn-zhangjiakou.aliyuncs.com/usr/uploads/2023/12/2350428403.png) #### 4. 测试(可选) 可以输入 `make test`命令进行编译结果测试。 ![编译测试](https://aliyun-yuesha-public-oss.oss-cn-zhangjiakou.aliyuncs.com/usr/uploads/2023/12/418040540.png) 等待一会就有结果了。 #### 5. 安装 输入指令 `make install`进行安装 ![安装php](https://aliyun-yuesha-public-oss.oss-cn-zhangjiakou.aliyuncs.com/usr/uploads/2023/12/1356166449.png) `php`的安装还是比较快的 #### 6. 配置到全局(可选) 输入命令: ```shell sudo ln -s 你的php安装目录/bin/php /usr/local/bin/php ``` 我这里做了一个软连接,将你的 `php`脚本文件,放到了用户执行脚本下,这样在任何用户账号下,都可以正常访问 `php`了 #### 7. 处理 `php`的配置文件 这里还缺少一步,就是创建我们的 `php`配置文件——`php.ini` 这个文件很重要,关系到以后生产环境用到的所有设置信息,包括扩展和其他内容,都需要从这里读取配置。 好在,`php`官网考虑到这个问题了,在源码包内给我们提供了一个示例文件(`php.ini-production`),我们如果要求不高的话,可以直接拷贝过去。 使用命令: ```shell cp /server/data/packages/php-8.3.0/php.ini-production /server/php/8.3.0/etc/php.ini ``` 我这里是用的我的目录,你用的话,需要替换为你自己的目录信息。 复制好之后,可以使用脚本命令输出当前配置文件路径: ```shell php --ini ``` 可以看到输出了当前的配置目录列表: ![读取配置文件路径](https://aliyun-yuesha-public-oss.oss-cn-zhangjiakou.aliyuncs.com/usr/uploads/2023/12/17901560.png) ### 四、测试 #### 1. 输出 `PHP`版本 输入命令 `php --version`即可输出当前 `php`版本 当然,如果你没有执行我上面说的 `3.6`步骤的话,那你很可能找不到这个命令,将上述的 `php`替换为你的脚本文件路径即可。 例如:`/server/php/8.3.0/bin/php --version` ![输出当前版本](https://aliyun-yuesha-public-oss.oss-cn-zhangjiakou.aliyuncs.com/usr/uploads/2023/12/1845092978.png) #### 2. 查看 `php`已安装的扩展 输入命令: ```shell php -m ``` 可以看到当前已安装的扩展列表。 ![已安装的php扩展列表](https://aliyun-yuesha-public-oss.oss-cn-zhangjiakou.aliyuncs.com/usr/uploads/2023/12/258292153.png) ### 五、启动 `PHP-FPM`服务 首先,进入 `php`的安装目录下,找到 `安装目录/sbin/php-fpm`文件 使用 `root`权限进行启动 ```shell sudo /server/php/8.3.0/sbin/php-fpm ``` ![启动php-fpm](https://aliyun-yuesha-public-oss.oss-cn-zhangjiakou.aliyuncs.com/usr/uploads/2023/12/3079467725.png) 欢迎关注拓行公众号,分享各种技术博客文章拓行——奋勇进取,开拓未来,砥砺前行 最后修改:2024 年 03 月 26 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 1 如果您对各种技术博客文章感兴趣,欢迎关注拓行公众号,分享各种专业技术知识~