Unix 系統下的 Apache 2.0

本節內含在 Unix 平台的 Apache 2.0 下安裝 PHP 的說明和提示。

警示

不推薦將執行緒化 MPM 用於實際運作的 Apache 2 環境中去。用 prefork MPM 替代,或是用 Apache 1。其原因見 FAQ 中的使用執行緒化 MPM 的 Apache2

推薦閱讀 Apache 文件,瞭解一下 Apache 2.0 伺服器。

PHP 和 Apache 2.0.x 相容性注意事項: 已知下列版本的 PHP 可以工作於最近版本的 Apache 2.0.x 之下:

以上版本的 PHP 與 Apache 2.0.40 或更高版本相容。

Apache 2.0 SAPI 支援自 PHP 4.2.0 起。PHP 4.2.3 可工作於 2.0.39,不要用任何其它版本的 Apache 與 PHP 4.2.3 配合。不過推薦的設定是用 PHP 4.3.0 或更高版本與最新版的 Apache2 配合使用。

所有提及的 PHP 版本仍然能工作於 Apache 1.3.x 之下。

下載最新版本的 Apache 2.0,並且根據上文選取合適版本的 PHP 下載。本嚮導僅包括最基礎的內容,只能讓 Apache 2.0 和 PHP 能夠標準工作。更多訊息請閱讀 Apache 文件。這裡省略所有的版本號,以保證本文的正確性。需要將本文的「NN」置換為相應的版本號。

例子 4-4. 安裝說明(Apache 2 共享模組版本)

1.  gzip -d httpd-2_0_NN.tar.gz
2.  tar xvf httpd-2_0_NN.tar
3.  gunzip php-NN.tar.gz
4.  tar -xvf php-NN.tar
5.  cd httpd-2_0_NN
6.  ./configure --enable-so
7.  make
8.  make install

    現在已經將 Apache 2.0.NN 安裝在 /usr/local/apache。本安裝支援可載入模組
    和標準的 MPM prefork。之後,可以使用如下指令啟動 Apache 伺服器:
    /usr/local/apache2/bin/apachectl start
    若果成功,可以停止 Apache 伺服器並繼續安裝 PHP:
    /usr/local/apache2/bin/apachectl stop.

9.  cd ../php4-NN

10. 現在需要配置 PHP。在這裡可以用各種各樣的參數來自訂PHP,例如啟動哪些
    增加功能包的支援等。用 ./configure --help 指令可以列出現用的可用的所有參
    數。在此例中,將給出一個在有 MySQL 支援的 Apache 2 上進行配置的範例。
    會員本地的 apxs 的路徑可能會不同,事實上,在會員的系統中,它可能被命名為
    apxs2。

    ./configure --with-apxs2=/usr/local/apache2/bin/apxs

11. make
12. make install

    若果決定在安裝後改變配置選項,只需重複最後的三步,然後需要重新啟動 Apache
    使新模組生效。無需重新編譯。

    請注意,除非明確有提示,否則「make install」指令將安裝 PEAR、各種 PHP 工具
    諸如 phpize,安裝 PHP CLI 等等。

13. 配置 php.ini

    cp php.ini-dist /usr/local/lib/php.ini

    可以編輯 php.ini 檔案以修改 PHP 的選項。若果想要把此檔案放到另外的位置,
    需要在步驟 10 增加 --with-config-file-path=/path 選項。

    若果選取 php.ini -recommended,請務必閱讀其中的變更的清單,它們將影響
    PHP 的執行。

14. 編輯 httpd.conf 檔案以呼叫 PHP 模組。LoadMolude 表達式右邊的路徑必須指向
    系統中的 PHP。以上的 make install 指令可能已經完成了這些,但務必要檢查。

    對於 PHP 4:
       LoadModule php4_module modules/libphp4.so

    對於 PHP 5:
       LoadModule php5_module modules/libphp5.so

15. 告知 Apache 將特定的副檔名解析成 PHP,例如,讓 Apache 將副檔名 .php
    解析成 PHP。可以將任何副檔名指定為 PHP,只需增加它們,每一個用空格分隔。
    例如,要增加 .phtml:

    AddType application/x-httpd-php .php .phtml

    通常還將 .phps 副檔名設定成顯示高亮的 PHP 源檔案,可以這樣來完成:

    AddType application/x-httpd-php-source .phps

16. 啟動 Apache 伺服器:
   /usr/local/apache2/bin/apachectl start

按照上面的步驟便可以使 Apache 2.0 將 PHP 作為 SAPI 模組了。當然 Apache 和 PHP 都還有很多配置選項,可以在相應的原始碼目錄中使用 ./configure --help 獲得更多訊息。假如要編譯一個多執行緒版本的 Apache 2.0,必須覆蓋標準的 MPM-Module prefork,或是 worker 或是 perchild。要這樣,需要在上面的第 6 步使用 --with-mpm=worker 或是 --with-mpm=perchild 選項。之前需要瞭解自己在做什麼。更多訊息請參考 Apache 文件中關於 MPM-Modules 的部分。

注: 若果要使用內容協商(content negotiation)機制,請閱讀 Apache MultiViews 常見問題

注: 要編譯多執行緒版本的 Apache,系統必須支援多執行緒。這也意味著需要將 PHP 編譯為正處在試驗階段的 Zend Thread Safety(ZTS),因此並不是所有的增加都可以使用了。推薦編譯 Apache 使用標準的 prefork MPM-Module。