天天看點

php5.6源碼安裝與apache內建

如果源碼編譯安裝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

php5.6源碼安裝與apache內建

現在開始正式安裝libiconv庫,首先下載下傳libiconv庫,如下:

php5.6源碼安裝與apache內建

解壓libiconv庫,如下:

tar -xf libiconv-1.14.tar.gz

php5.6源碼安裝與apache內建

安裝libiconv庫,首先檢視安裝幫助資訊。如下:

./configure –help

php5.6源碼安裝與apache內建

通過上圖的幫助,我們可以看到libiconv庫預設的安裝路徑為/usr/local。現在開始安裝libiconv庫,如下:

./configure –prefix=/usr/local

make &amp;&amp; make install

php5.6源碼安裝與apache內建
php5.6源碼安裝與apache內建

libiconv庫安裝完畢後,建議把/usr/local/lib庫加入到到/etc/ld.so.conf檔案中,然後使用/sbin/ldconfig使其生效。如下:

echo “/usr/local/lib”&gt;&gt;/etc/ld.so.conf

/sbin/ldconfig

php5.6源碼安裝與apache內建

如果沒有進行此步操作的話,在安裝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

php5.6源碼安裝與apache內建
php5.6源碼安裝與apache內建

注意上述指令中–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。如下:

php5.6源碼安裝與apache內建

vi makefile

php5.6源碼安裝與apache內建

make install

php5.6源碼安裝與apache內建

通過上圖,我們可以很明顯的看到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

php5.6源碼安裝與apache內建

除此之外,我們還需要修改apache的預設首頁檔案,添加index.php。内容如下:

echo “&lt;?php phpinfo();?&gt;”&gt;/usr/local/apache2/htdocs/index.php

cat /usr/local/apache2/htdocs/index.php

php5.6源碼安裝與apache內建
php5.6源碼安裝與apache內建

<b>四、</b><b>測試php</b><b></b>

以上修改完畢後,我們重新啟動apache,使用如下指令:

/etc/init.d/httpd graceful

注意該指令可以優雅的重新開機apache。

php5.6源碼安裝與apache內建

打開站點,如下:

php5.6源碼安裝與apache內建

通過上圖,我們可以很明顯的看到apache已經支援php。

繼續閱讀