记一次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
记一次PHP源码编译过程_第1张图片

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

我的系统:deepin 15.11
gcc版本:6.3.0

开始

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

记一次PHP源码编译过程_第2张图片

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

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

第四步,make && make install

编译和安装大概几分钟,没有报错。也编译安装成功。跑了下项目试了下,发现默认编译是没有pdo_mysql 扩展的。怪自己大意,重新编译扩展

记一次PHP源码编译过程_第3张图片

第五步 重新编译扩展

进入源码扩展目录 依次 phpize,configure,make && make install
发现报错,目录异常,打开源码,加绝对路径,重新编译,然后改php.ini 在extension开启pdo_mysql.so,试了下 又不行,各种报错,折腾了很久,删除整个php安装目录,重新编译

记一次PHP源码编译过程_第4张图片

记一次PHP源码编译过程_第5张图片

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

第六步 .configure

这里一定要清除之前编译缓存,编译的时候加上编译参数
同时把其他常用php扩展也加到里面(gd,xml,bcmath,mbstring,openssl等等 这些默认都是不会安装的)

这里由于安装了部分扩展(例如gd库),导致依赖报错,通过本地安装对应依赖解决

第七步,make && make install

又是漫长的等待...

第八步 测试 终于成功

总结

源码编译确实麻烦而且时间漫长,前前后后大概折腾了快2个小时。除非是体验新版本或者自己对源码有修改之外,更加推荐docker或者包安装方式。

你可能感兴趣的:(linux,运维)