引言

很久没有源码编译过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或者包装置形式。