当前位置: 首页 > Linux

记一个PHP源码编译过程

时间:2023-04-06 18:53:55 Linux

简介好久没有从源码编译PHP了。我的电脑一直使用docker运行php,之前安装过XAMPP(因为我的电脑系统是deepin,deepin官方推荐使用XAMPP搭建php环境)。够用了,不过最近在折腾phpunit,正好用到phpstorm做单元测试。虽然phpstorm的phpcli也支持远程docker,但是我还是想在本地跑单机测试。由于我原来的XAMPP环境是php7.4,但是公司项目并不完全支持php7.4。所以打算在本地重新搭建一个php7.2的环境。以下是phpstormcli解释器的配置。在没有docker支持之前,有很多php环境安装了docker和packages。这次想了想,好久都懒得安装源码了,就尝试从源码编译php吧。我的系统:deepin15.11gcc版本:6.3.0第一步当然是下源码了。这里我选择的是php官网,7.2.34版本的tag.gz包。第二步解压tar-zxvfxxx第三步编译查看.configure生成Makefile。开头有个坑。一开始我并没有添加php的编译参数,只是指定了安装目录和配置目录。第四步make&&makeinstall大概用了几分钟,编译安装没有报错。也编译安装成功。跑项目试了一下,发现默认编译没有pdo_mysql扩展名。怪自己粗心,重新编译扩展Step5重新编译扩展进入源码扩展目录依次phpize,configure,make&&makeinstall发现错误,目录不正常,打开源码,添加绝对路径,重新编译,然后把php.ini改成在扩展pdo_mysql.so中打开,试了一下,还是不行。报告了各种错误。折腾了半天,把整个php安装目录删掉,重新编译ps:终于把源码中的路径改成绝对路径解决了第六步。这里配置一定要清空之前的编译缓存,编译的时候加上编译参数,给它加上其他常用的php扩展(gd、xml、bcmath、mbstring、openssl等默认不安装)这里因为有些扩展(比如gdlibrary)都安装了,导致依赖错误,通过本地安装相应的依赖解决了第七步,make&&makeinstall漫长的等待……第八步测试终于成功了。总结源码编译确实比较麻烦,时间也比较长。大概花了大约2个小时。除非是体验新版本或者自己修改源码,否则更推荐docker或者package安装。