如果源碼編譯安裝php的話,需要在編譯時指定–with-apxs2=/usr/local/apache2/bin/apxs表示告訴編譯器通過apache的mod_php5子產品來提供對php的解析。
同時php安裝的最後一步make install時,我們會看到将動态連結庫libphp5.so拷貝到apache2的安裝目錄的modules目錄下,并且還需要在httpd.conf配置檔案中添加loadmodule語句來動态将libphp5.so子產品加載進來,進而實作apache對php的支援。
php與apache內建需要以下幾個步驟:
1、安裝libiconv庫
2、php源碼安裝
3、配置apache使其支援php
4、測試php
<b>一、安裝libiconv庫</b>
libiconv庫為需要做轉換的應用程式提供了一個iconv指令,以實作一個字元編碼到另一個字元編碼的轉換,比如它可以将utf8編碼轉換成gb18030編碼,反過來也行。
php與apache內建時一定要安裝libiconv庫,否則在make時系統會報錯。報錯資訊如下:
make: *** [sapi/cli/php] error 1
/usr/bin/ld: cannot find -liconv
collect2: ld returned 1 exit status
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iMi1WdoR3XxADMldWYtl2XwlGbj9CXyEzLcRTMwIzLcNHZh9GbwV3LcRnblRnbvNWLwd3Lc12bj5Sau5WYslmL3d3dvw1LcpDc0RHaiojIsJye.png)
現在開始正式安裝libiconv庫,首先下載下傳libiconv庫,如下:
解壓libiconv庫,如下:
tar -xf libiconv-1.14.tar.gz
安裝libiconv庫,首先檢視安裝幫助資訊。如下:
./configure –help
通過上圖的幫助,我們可以看到libiconv庫預設的安裝路徑為/usr/local。現在開始安裝libiconv庫,如下:
./configure –prefix=/usr/local
make && make install
libiconv庫安裝完畢後,建議把/usr/local/lib庫加入到到/etc/ld.so.conf檔案中,然後使用/sbin/ldconfig使其生效。如下:
echo “/usr/local/lib”>>/etc/ld.so.conf
/sbin/ldconfig
如果沒有進行此步操作的話,在安裝php執行make install,系統就會報錯。報錯資訊如下:
/root/php-5.6.2/sapi/cli/php: error while loading shared libraries: libiconv.so.2: cannot open shared object file: no such file or directory
<b>二、php源碼安裝</b>
yum -y install gcc gcc-c++ libxml2 libxml2-devel
./configure –enable-fpm –enable-mbstring –with-mysql=/usr/local/mysql –with-iconv-dir=/usr/local –with-apxs2=/usr/local/apache2/bin/apxs
注意上述指令中–enable-fpm的作用是開啟php的fastcgi功能,即開啟php-fpm功能。
–with-mysql=/usr/local/mysql是啟用php支援mysql的功能,/usr/local/mysql是mysql資料庫的安裝路徑。
–enable-mbstring表示啟用mbstring子產品mbstring子產品的主要作用在于檢測和轉換編碼,提供對應的多位元組操作的字元串函數。目前php内部的編碼隻支援iso-8859-*、euc-jp、utf-8,其他的編碼的語言是沒辦法在php程式上正确顯示的,是以我們要啟用mbstring子產品。
–with-iconv-dir=/usr/local指定php存放libiconv庫的位置。
–with-apxs2=/usr/local/apache2/bin/apxs指定php查找apache的位置。
編譯完畢後,我們再來make。在make時,我們注意要加上-liconv參數。如果不加上-liconv參數,系統在make編譯會報錯。報錯資訊如下:
generating phar.php
php-5.3.16/sapi/cli/php: error while loading shared libraries: libiconv.so.2: cannot open shared object file: no such file or directory
使用指令如下:
make zend_extra_libs=’-liconv’
我們也可以通過修改makefile檔案,在zend_extra_libs行加入-liconv。如下:
vi makefile
make install
通過上圖,我們可以很明顯的看到apache配置檔案httpd中啟用php支援,同時也把libphp5.so檔案複制到apache的子產品目錄下。
<b>三、</b><b>配置apache使其支援php</b><b></b>
php安裝完畢後,我們就可以通過修改apache的配置檔案httpd.conf來使其支援php。
我們隻需要在httpd.conf檔案中加入如下兩行代碼:
loadmodule php5_module modules/libphp5.so
addtype application/x-httpd-php .php
注意,其中loadmodule php5_module modules/libphp5.so行,我們檢視httpd.conf檔案時會發現該行已經存在。那是因為在安裝php時,添加的。現在我們隻需要添加addtype application/x-httpd-php .php行即可。
vi /usr/local/apache2/conf/httpd.conf
除此之外,我們還需要修改apache的預設首頁檔案,添加index.php。内容如下:
echo “<?php phpinfo();?>”>/usr/local/apache2/htdocs/index.php
cat /usr/local/apache2/htdocs/index.php
<b>四、</b><b>測試php</b><b></b>
以上修改完畢後,我們重新啟動apache,使用如下指令:
/etc/init.d/httpd graceful
注意該指令可以優雅的重新開機apache。
打開站點,如下:
通過上圖,我們可以很明顯的看到apache已經支援php。