做自(zì)由與創造的先行者

Unix 系統下(xià)的 Apache 2.x

PHP中文(wén)手冊

本節包括在 Unix 平台的 Apache 2.x 下(xià)安裝 PHP 的說明(míng)和(hé)提示。

警告

不推薦在使用(yòng) Apache 2 的産品中使用(yòng)線程化 MPM。應使用(yòng)預分支 MPM,Apache 2.0 和(hé) 2.2 默認的 MPM。其原因見 FAQ 中的相關條目使用(yòng)線程化 MPM 的 Apache2。

推薦閱讀 » Apache 文(wén)檔,了(le)解一下(xià) Apache 2.x 服務器,以及詳細的安裝參數。

可以從(cóng) » Apache 下(xià)載站(zhàn)點下(xià)載最新版本的Apache,并且根據上(shàng)文(wén)選擇合适版本的 PHP 下(xià)載。本向導僅包含最基礎的内容,隻能(néng)讓 Apache 2.x 和(hé) PHP 能(néng)夠正常工(gōng)作(zuò)。更多信息請(qǐng)閱讀 » Apache 文(wén)檔。這(zhè)裏省略所有的版本号,以保證本文(wén)的正确性。需要将本文(wén)的“NN”替換爲相應的版本号。

當前 Apache 2.x 有兩個流行的版本 - 2.4 和(hé) 2.2。雖然選擇某個版本會(huì)有種種原因,但(dàn)是如果可以考慮的話(huà),我們還是建議(yì)使用(yòng)最新的 Apache 2.4 版本。當然,以下(xià)的介紹同樣适合 Apache 2.4 和(hé) 2.2。請(qǐng)注意 Apache 2.2 已經不再被官方支持,并且不再發布新功能(néng)和(hé)補丁更新。

從(cóng)上(shàng)面列出的地方獲取 Apache 源碼包,然後解壓:

tar -xzf httpd-2.x.NN.tar.gz

同樣,獲取 PHP 源碼包并解壓:

tar -xzf php-NN.tar.gz

編譯并安裝 Apache。請(qǐng)參考 Apache 安裝文(wén)檔了(le)解編譯 Apache 的更多細節。

cd httpd-2_x_NN

./configure --enable-so

make

make install

現(xiàn)在已經将 Apache 2.x.NN 安裝在 /usr/local/apache2。本安裝支持可裝載模塊 和(hé)标準的 MPM prefork。之後,可以使用(yòng)如下(xià)命令啓動 Apache 服務器:

/usr/local/apache2/bin/apachectl start

如果成功,可以停止 Apache 服務器并繼續安裝 PHP:

/usr/local/apache2/bin/apachectl stop

現(xiàn)在需要配置并編譯 PHP。在這(zhè)裏可以用(yòng)各種各樣的參數來(lái)自(zì)定義 PHP,例如啓動哪些(xiē)擴展功能(néng)包的支持等。用(yòng) ./configure --help 命令可以列出當前可用(yòng)的所有參數。在此例中,将給出一個在有 MySQL 支持的 Apache 2 上(shàng)進行配置的範例。

如果按照上(shàng)面的說明(míng)從(cóng)源代碼編譯了(le) Apache,下(xià)面的例子會(huì)正确匹配 apxs 的路徑。如果通過其他(tā)方式安裝了(le) Apache,需要相應的調整 apxs 的路徑。注意,在有些(xiē)發行版本中,可能(néng)将 apxs 更名爲 apxs2。

cd ../php-NN

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

make

make install

如果決定在安裝後改變配置選項,隻需重複最後的三步 configure,make,以及 make install,然後需要重新啓動 Apache 使新模塊生效。Apache 不需要重新編譯。

請(qǐng)注意,除非明(míng)确有提示,否則“make install”命令将安裝 PEAR、各種 PHP 工(gōng)具諸如 phpize,并安裝 PHP CLI 等等。

配置 php.ini

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

可以編輯 php.ini 來(lái)設置 PHP 運行時(shí)的選項。如果想要把此文(wén)件放(fàng)到(dào)另外(wài)的位置,需要在步驟 5 添加 --with-config-file-path=/path 選項。

如果選擇了(le) php.ini-production,請(qǐng)務必閱讀其中的變更列表,它們将影響 PHP 的執行。

編輯 httpd.conf 文(wén)件以調用(yòng) PHP 模塊。LoadModule 表達式右邊的路徑必須指向系統中的 PHP 模塊。以上(shàng)的 make install 命令可能(néng)已經完成了(le)這(zhè)些(xiē),但(dàn)務必要檢查。

PHP 8 版本:

LoadModule php_module modules/libphp.so

PHP 7 版本:

LoadModule php7_module modules/libphp7.so

告知(zhī) Apache 将特定的擴展名解析成 PHP,例如,讓 Apache 将擴展名 .php 解析成 PHP。爲了(le)避免潛在的危險,例如上(shàng)傳或者創建類似 exploit.php.jpg 的文(wén)件并被當做 PHP 執行,我們不再使用(yòng) Apache 的 AddType 指令來(lái)設置。參考下(xià)面的例子,你(nǐ)可以簡單的将需要的擴展名解釋爲 PHP。 我們将添加 .php 來(lái)進行演示。

<FilesMatch \.php$>

SetHandler application/x-httpd-php

</FilesMatch>

或者,你(nǐ)也(yě)想将 .php,.php2,.php3,.php4,.php5,.php6,以及 .phtml 文(wén)件都當做 PHP 來(lái)運行,我們無需額外(wài)的設置,僅需按照下(xià)面這(zhè)樣來(lái):

<FilesMatch "\.ph(p[2-6]?|tml)$">

SetHandler application/x-httpd-php

</FilesMatch>

然後,可以将 .phps 文(wén)件由 PHP 源碼過濾器處理(lǐ),使得其在顯示時(shí)可以高(gāo)亮(liàng)源碼,設置如下(xià):

<FilesMatch "\.phps$">

SetHandler application/x-httpd-php-source

</FilesMatch>

mod_rewrite 也(yě)有助于将那些(xiē)不需要運行的 .php 文(wén)件的源碼高(gāo)亮(liàng)顯示,而并不需要将他(tā)們更名爲 .phps 文(wén)件:

RewriteEngine On

RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]

不要在正式生産運營的系統上(shàng)啓動 PHP 源碼過濾器,因爲這(zhè)可能(néng)洩露系統機密或者嵌入的代碼中的敏感信息。

按照通常的方式啓動 Apache 服務:

/usr/local/apache2/bin/apachectl start

或者

service httpd restart

按照上(shàng)面的步驟便可以使 Apache 2.x 将 PHP 作(zuò)爲 SAPI 模塊了(le)。當然 Apache 和(hé) PHP 都還有很(hěn)多配置選項,可以在相應的源代碼目錄中使用(yòng) ./configure --help 獲得更多信息。

假如要編譯一個多線程版本的 Apache,可在編譯時(shí)選擇用(yòng) worker MPM 來(lái)替換标準的 prefork MPM。隻需在上(shàng)面的第 3 步使用(yòng):

--with-mpm=worker

如果不是很(hěn)明(míng)确這(zhè)樣做的後果并且大(dà)概理(lǐ)解其含義的話(huà),最好(hǎo)不要進行這(zhè)一步。更多信息請(qǐng)參考 Apache 文(wén)檔中關于 » MPM-Modules 的部分。

注意:

Apache MultiViews 常見問題中讨論了(le)在 PHP 中使用(yòng) MultiViews。

注意:

要編譯多線程版本的 Apache,系統必須支持多線程。這(zhè)也(yě)意味着需要将 PHP 編譯爲 Zend Thread Safety(ZTS), 因此并不是所有的擴展都可以使用(yòng)了(le)。推薦編譯 Apache 使用(yòng)标準的 prefork MPM-Module。

網站(zhàn)建設開(kāi)發|APP設計(jì)開(kāi)發|小(xiǎo)程序建設開(kāi)發
下(xià)一篇:Unix 系統下(xià)的 Nginx 1.4.x
上(shàng)一篇:安裝前需要考慮的事(shì)項