现在,让我们先冷静一些(这种时候心情通常不太稳定),理清php的解析是谁来做的。
答案:apache交给谁,谁就来做。apache与php协作有三种方式,libphp7.so或者libphp5.so,php-fpm,preforker。
0.添加php文件格式的解析
httpd.conf中加上 AddType application/x-httpd-php .php
找到DirectoryIndex,在index.html后面加上index.php。
1.libphp7.so或者libphp5.so
此时,apache以apache2handler模式运行,最明显的表现是在httpd.conf文件中,
LoadModule php7_module (so文件的目录)/libphp7.so
这一行没有注释掉(或者是libphp5.so)。
如果上述语句被注释了,去掉注释,通常程序就正常了。
原因:libphp7.so或者libphp5.so就是完整的php语言模块,apache根本就不问外面有没有装php语言,只要有这一个so文件,加上so文件默认目录的php.ini的配置文件就够了。
如果去掉注释还是没好,有两种情况。
(1)php的so文件不存在
(如果环境全部使用yum安装)
这时可以尝试yum install mod_php,一般问题就解决了(注意和自己的apache版本是否一致)。
(如果想用php7.0.而不是php7.1,可以重新yum install php70w,因为php70w包含了php7.0的libphp7.so)
或者输入shell命令,find / -name libphp7.so,找到目录位置换上去。
(2)apache是高版本源码安装
即便yum安装了mod_php,但那是apache 2.2.15或以下的低版本配套so。
这时就需要添加编译选项,编译php用的模块文件。
2.php-fpm
此时,apache通过php-fpm和php语言通信,需要设置代理转发。当时网上找其他人的博客也费了很多事。