說明
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網頁:成功!