说明
apache2.4. 源码安装
php5.4 yum安装
问题
apache无法解析php
解决过程
1.打开httpd.conf文件,发现没载入libphp5.so模块。
网上很多网友给出,这么载入 LoadModule php5_module modules/libphp5.so 然而我发现我的modules包里根本没有libphp5.so
2.于是 find / -name libphp5.so 发现目标 /usr/lib64/httpd/modules/libphp5.so
3.于是打开httpd.conf文件,载入libphp5.so模块
LoadModule php5_module modules /usr/lib64/httpd/modules/libphp5.so
启动apache报错如下:
Starting httpd: httpd: Syntax error on line 166 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/lib64/httpd/modules/libphp5.so into server: /usr/lib64/httpd/modules/libphp5.so: undefined symbol: unixd_config
于是各种查询各种查询,发现大多数都是apache2.2与php5.4整合使用,有的说apache2.4与php5.4不兼容。但是客户就是这个版本,也必须要求这个版本。于是再各种查询,最后在apache2.4官方文档上发现
unixd_config
This has been renamed to ap_unixd_config.
没错,人家apache2.4已经没有unixd_config了,改名了!
于是得出,我的php5.4确实不兼容我的apache2.4。
于是yum卸载掉php5.4.45。
于是重新源码安装php5.4.45
$ yum -y install libxml2 libxml2-devel
$ tar -zxvf php-5.4.45.tar.gz
$ cd php-5.4.45
$ ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-libxml2=/usr/include/libxml2
$ make
$ make install php
安装完再次查看apache2的配置文件,载入php模块的代码已出现(必须设置:–with-apxs2=/usr/local/apache2/bin/apxs才有)
#LoadModule php5_module modules/libphp5.so
于是,去掉注释符,再加入以下配置
AddType application/x-httpd-php .html #没有此配置,解析不了html文件中的php代码
AddHandler php5-script .php #没有此配置,php网页不能被正确解析打开,而是被浏览器下载
重新启动apache:成功!
读取php网页:成功!
读取带php代码的html网页:成功!