我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

感谢大家的支持,本篇文章中,苏南大叔还是想和大家说说,有关php源码编译的事情。在上一篇文章中,苏南大叔编译了一个最简版本的php。事实上,这个最简版本的php,距离我们的最终能够使用的地步,还是有很大差距的。在本篇文章中,苏南大叔,稍稍对前两篇文章,进行一下再加工。目的就是:使得自编译的最新版apache,能够支持自编译的最新版php。当然,这种情况下,php和apche的关系是apache handler。特别提示:如果聪明的读者们,并不考虑apache,而使用nginx做服务器软件的话,则不需要考虑本篇内容。

苏南大叔:mac系统,如何编译apache的php7模块? - mac-apache-php7
mac系统,如何编译apache的php7模块?(图4-1)

寻找apxs文件位置

如果您的系统里面,本来就存在apxs文件,那么这里,并不需要过多再次费事。如果,在您的mac里面,无法找到apxs文件,那么下面这篇文章,也许是您的选择:

那么,苏南大叔得到的该文件的地址是:/usr/local/apache2/bin/apxs 。这个地址我们可以暂时记下来,下一步会用到这个地址。

apache的php模块安装部署

从上一篇文章中,我们可以知道:默认情况下,apache是不支持php的。编译php的能力启用,是必须通过php和apache的联合再次编译而获得的。这个过程的关键词就是apxs。编译的方式,其实也非常简单,就是在./configure中指定参数`--with-apxs2=/usr/local/apache2/bin/apxs',这样来获得的,其他的情况并无异议。

make clean
./configure --prefix=/usr/local/php72 --enable-fpm --with-apxs2=/usr/local/apache2/bin/apxs
make
sudo make install

苏南大叔:mac系统,如何编译apache的php7模块? - 000
mac系统,如何编译apache的php7模块?(图4-2)

这个apxs的相关参数,我们是通过对./configure文件的的参数列表这样分析获得的。

./configure --help|grep apxs

苏南大叔:mac系统,如何编译apache的php7模块? - 006
mac系统,如何编译apache的php7模块?(图4-3)

编译完成后,我们在apache的模块目录下面,就可以发现一个libphp7.so文件。但是苏南大叔的实际操作过程中,是得到一个warning的,但是貌似没有什么问题。

苏南大叔:mac系统,如何编译apache的php7模块? - 010
mac系统,如何编译apache的php7模块?(图4-4)

但是这个so文件的启用,还需要我们在apache的配置文件httpd.conf中添加些语句,才能启用。

LoadModule php7_module        modules/libphp7.so
AddType application/x-httpd-php .php .html .htm
PHPIniDir /usr/local/etc/php.ini

关于,上述代码中的PHPIniDir,您可以指定一个位置。当然,也可以不用指定这个位置。使用系统默认的ini位置,因为后续,我们需要多次编辑这个ini文件。所以,这里建议您还是指定一个位置,便于我们后续功能模块的添加。当然,文件内容,目前我们可以直接清空即可,会使用默认的ini内容的。

结论

apache的这种php支持方式,我们称之为apache handler模式,是使用apache做服务器软件的时候,最常见的方式。我们通过指定apxs文件,使得apche获得php的执行能力。然后通过指定的ini文件,不断添加新的php模块。这就是这个过程的最基本套路。您学会了么?

更多apache相关文件,可以点击这里查看:https://seosn.com/tag/apache/

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php    apache