爛泥:php5.6源碼安裝與apache整合,php5.6apache_PHP教程

來源:互聯網
上載者:User

爛泥:php5.6源碼安裝與apache整合,php5.6apache


本文由秀依林楓提供友情贊助,首發於爛泥行天下。

apache對php的支援是通過apache的mod_php5模組來支援的,這點與nginx不同。nginx是通過第三方的fastcgi處理器才可以對php進行解析,有關nginx與php整合,請看《爛泥:php5.6源碼安裝及php-fpm配置與nginx整合》。

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

一、安裝libiconv庫

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

make: *** [sapi/cli/php] Error 1

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

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

解壓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

二、php源碼安裝

有關php源碼安裝可以參照《爛泥:php5.6源碼安裝及php-fpm配置與nginx整合》文章, 下載並編譯php命令如下:

wget http://mirrors.sohu.com/php/php-5.6.2.tar.gz

./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的模組目錄下。

三、配置apache使其支援php

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 "">/usr/local/apache2/htdocs/index.php

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

四、測試php

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

/etc/init.d/httpd graceful

注意該命令可以優雅的重啟apache。

開啟網站,如下:

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

http://www.bkjia.com/PHPjc/925547.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/925547.htmlTechArticle爛泥:php5.6源碼安裝與apache整合,php5.6apache 本文由秀依林楓提供友情贊助,首發於爛泥行天下。 apache對php的支援是通過apache的mod_php5模組來...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.