apache2.4與php5.4整合遇到的問題

April發表於2019-02-16

說明

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

相關文章