本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规。大家都是程序员,不要闹得不开心。

默认情况下,php是作为apache的一个mod运行的。而最近,苏南大叔为了研究『.user.ini』文件的使用办法,需要把apache和php的关系,从从属的mod关系,变成对等的fastcgi的关系。

是不是有点晕?写个phpinfo()文件吧,然后看里面Server API这个项目,写着apache handler2.0的话。就无法实践『.user.ini』的好处了,别问我为什么,实践出真知。官方文档也没有说这事。

苏南大叔:mac系统,apache使用fastcgi模式对接php - phpinfo
mac系统,apache使用fastcgi模式对接php(图2-1)

准备php-fpm

苏南大叔是在mac下面实践的这个事情,所以,apache和php-fpm实际上都是已经安装好的。苏南大叔在命令行里面敲了一下php-fpm,貌似有些问题。先是提示/private/etc/php-fpm.conf配置文件没有,后来提示,log文件权限没有。似乎是有些麻烦啊。在etc下面发现了个php-fpm.conf.default文件,果断复制改名。然后把里面的log目录给换个地方。

苏南大叔:mac系统,apache使用fastcgi模式对接php - php-fpm-01
mac系统,apache使用fastcgi模式对接php(图2-2)

然后,执行sudo php-fpm后,貌似就正常启动了。敲入127.0.0.1:9000,似乎也没有看到期待的东西。革命尚未成功,同志还需努力。

准备apache

修改apache的httpd.conf文件,路径在/private/ect/apache2/ 。注释掉了libphp5.so,开启了mod_proxy_fcgi.so和mod_proxy.so,当然,不要忘了vhost相关。

#LoadModule php5_module libexec/apache2/libphp5.so
LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_fcgi_module libexec/apache2/mod_proxy_fcgi.so
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
Include /private/etc/apache2/extra/httpd-vhosts.conf
<FilesMatch \.php$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
    <IfModule dir_module>
    DirectoryIndex index.html index.php
    </IfModule>
</FilesMatch>

上边对php文件的处理,就转到了fastcgi了。而在 /private/etc/apache2/other/php5.conf中,原版的处理是这样的。特别说明的是:下面的这个配置就是拿出来学习一下,因为已经注释掉了mod_php了,所以这个配置也是没用的了。仅供学习参考一下而已。

<IfModule php5_module>
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
    <IfModule dir_module>
        DirectoryIndex index.html index.php
    </IfModule>
</IfModule>

注意: 您的系统里面可能是php7的字样,php5已经快成为过去时了。

附加内容

附上mac系统下,重启apache的命令,如下:

停止服务:sudo apachectl stop
开启服务:sudo apachectl start
重启服务:sudo apachectl restart

重启后,看看phpinfo()的serverAPI吧。如果看到fastcgi的字样,那么就应该是可以的了。加油!

结语

本文内容到此结束,欢迎关注苏南大叔的apache系列博客内容。https://newsn.net/tag/apache/

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