乐趣区

关于linux:记一次PHP源码编译过程

引言

很久没有源码编译过 php 了。

本人电脑始终用 docker 跑 php,另外就是之前装过 XAMPP(因为本人电脑系统是 deepin,deepin 官网举荐用 XAMPP 搭建 php 环境)。原本也够用,然而最近在折腾 phpunit,恰好本人用 phpstorm 做单元测试。phpstorm 的 php cli 尽管也反对近程 docker,然而本人还是想在本地运行单测。因为本人原先的 XAMPP 环境是 php7.4,然而公司我的项目不齐全反对 php7.4。所以打算在本地从新构建一套 php7.2 环境。

上面是 phpstorm cli 解释器配置 反对 from docker

之前用 docker 和包装置 php 环境比拟多,这次想了下,良久没有折腾源码装置了,所以试下源码编译 php。

我的零碎:deepin 15.11
gcc 版本:6.3.0

开始

第一步,当然是源码下,我这里抉择 php 官网,版本 7.2.34 tag.gz 包。

第二步,解压 tar -zxvf xxx
第三步,.configure 编译查看 生成 Makefile

这里开始就有坑了 开始的时候我没有加 php 编译参数,只指定装置目录和配置目录

第四步,make && make install

编译和装置大略几分钟,没有报错。也编译装置胜利。跑了下我的项目试了下,发现默认编译是没有 pdo_mysql 扩大的。怪本人粗心,从新编译扩大

第五步 从新编译扩大

进入源码扩大目录 顺次 phpize,configure,make && make install
发现报错,目录异样,关上源码,加绝对路径,从新编译,而后改 php.ini 在 extension 开启 pdo_mysql.so,试了下 又不行,各种报错,折腾了很久,删除整个 php 装置目录,从新编译

ps: 最初通过改源码里门路为绝对路径解决

第六步 .configure

这里肯定要革除之前编译缓存,编译的时候加上编译参数
同时把其余罕用 php 扩大也加到外面(gd,xml,bcmath,mbstring,openssl 等等 这些默认都是不会装置的)

这里因为装置了局部扩大(例如 gd 库),导致依赖报错,通过本地装置对应依赖解决

第七步,make && make install

又是漫长的期待 …

第八步 测试 终于胜利

总结

源码编译的确麻烦而且工夫漫长,前前后后大略折腾了快 2 个小时。除非是体验新版本或者本人对源码有批改之外,更加举荐 docker 或者包装置形式。

退出移动版