Unix 系統上的 Apache 2.x
本節包含關於在 Unix 系統上安裝 Apache 2.x 版 PHP 的注意事項和提示。
警告我們不建議在 Apache 2 的正式環境中使用執行緒式 MPM。請使用 prefork MPM,這是 Apache 2.0 和 2.2 的預設 MPM。有關原因,請閱讀相關的常見問題解答,了解使用執行緒式 MPM 的 Apache2
» Apache 文件是關於 Apache 2.x 伺服器的最權威的資訊來源。更多關於 Apache 安裝選項的資訊可以在那裡找到。
最新版的 Apache HTTP 伺服器可以從 » Apache 下載網站 取得,而合適的 PHP 版本則可以從上述網站取得。本快速指南僅涵蓋 Apache 2.x 和 PHP 的入門基礎。如需更多資訊,請閱讀 » Apache 文件。這裡省略了版本號,以確保說明的正確性。在以下範例中,「NN」應該替換為您正在使用的 Apache 特定版本。
目前 Apache 2.x 有兩個版本:2.4 和 2.2。雖然選擇每個版本都有不同的原因,但 2.4 是目前的最新版本,也是推薦的版本,如果您可以選擇的話。不過,這裡的說明適用於 2.4 或 2.2。請注意,Apache httpd 2.2 已正式終止生命週期,不再發布新的開發或修補程式。
-
從上面列出的位置取得 Apache HTTP 伺服器,並解壓縮它。
-
同樣地,取得並解壓縮 PHP 原始碼。
-
建置並安裝 Apache。有關建置 Apache 的更多詳細資訊,請參閱 Apache 安裝文件。
-
現在,您可以在 /usr/local/apache2 下使用 Apache 2.x.NN,它已設定為支援可載入模組和標準 MPM prefork。要測試安裝,請使用您的正常程序啟動 Apache 伺服器,例如:
然後停止伺服器,繼續進行 PHP 的設定。
-
現在,設定並建置 PHP。您可以使用各種選項自訂 PHP,例如要啟用哪些擴充功能。執行 ./configure --help 以取得可用選項的清單。在我們的範例中,我們將使用 Apache 2 和 MySQL 支援進行簡單的設定。
如果您是按照上述說明從原始碼建置 Apache,以下範例將符合您 apxs 的路徑,但如果您是以其他方式安裝 Apache,則需要相應地調整 apxs 的路徑。請注意,某些發行版可能會將 apxs 重新命名為 apxs2。
如果您決定在安裝後更改設定選項,則需要重新執行 configure、make 和 make install 步驟。您只需要重新啟動 Apache 即可使新的模組生效。不需要重新編譯 Apache。
請注意,除非另有指示,否則 make install 也會安裝 » PEAR、各種 PHP 工具,例如 phpize、安裝 PHP CLI 等等。
-
設定您的 php.ini。
您可以編輯您的 .ini
檔案來設定 PHP 選項。如果您希望將 php.ini 放在其他位置,請在步驟 5 中使用 --with-config-file-path=/some/path
。
如果您選擇 php.ini-production,請務必閱讀其中的變更清單,因為它們會影響 PHP 的行為。
-
編輯您的 httpd.conf 以載入 PHP 模組。LoadModule
陳述式右側的路徑必須指向您系統上 PHP 模組的路徑。上述的 make install 可能已經為您添加了這個路徑,但請務必檢查。
-
告訴 Apache 將特定副檔名解析為 PHP。例如,讓 Apache 將 .php
檔案解析為 PHP。除了使用 Apache 的 AddType
指令之外,我們還希望避免潛在危險的上傳和建立的檔案(例如 exploit.php.jpg)被作為 PHP 執行。使用此範例,您可以透過簡單地新增它們來讓任何副檔名解析為 PHP。我們將新增 .php
來示範。
或者,如果我們只想允許 .php
、.php2
、.php3
、.php4
、.php5
、.php6
和 .phtml
檔案作為 PHP 執行,而不允許其他檔案,我們可以使用以下設定:
若要允許 .phps
檔案由 php 原始碼過濾器處理,並以語法高亮顯示的原始碼顯示,請使用以下設定:
可以使用 mod_rewrite
來允許任何 .php
檔案以語法高亮顯示的原始碼顯示,而無需將其重新命名或複製到 .phps
檔案。
不應在正式環境系統上啟用 php 原始碼過濾器,因為它可能會洩露嵌入在原始碼中的機密或其他敏感資訊。
-
使用您的正常程序啟動 Apache 伺服器,例如:
或
按照上述步驟,您將擁有一個支援 PHP 作為 SAPI
模組的 Apache2 網頁伺服器。當然,Apache 和 PHP 還有許多其他設定選項。如需更多資訊,請在相應的原始碼樹中輸入 ./configure --help。
在建置 Apache 時,可以透過選擇 worker MPM(而不是標準的 prefork MPM)來建置多執行緒的 Apache。這是透過將以下選項新增到步驟 3 中傳遞給 ./configure 的參數來完成的:
在不了解此決定的後果以及至少對其含義有一定了解的情況下,不應執行此操作。Apache 文件中有關 » MPM 模組 的部分更詳細地討論了 MPM。
注意:
Apache MultiViews 常見問題 討論了如何將 MultiViews 與 PHP 搭配使用。
注意:
要建置多執行緒版本的 Apache,目標系統必須支援執行緒。在這種情況下,也應該使用 Zend Thread Safety (ZTS) 建置 PHP。在此設定下,並非所有擴充功能都可用。建議的設定是使用預設的 prefork MPM 模組建置 Apache。
nmmm at nmmm dot nu ¶15 年前
當我升級到 apache 2.2 時,這個
AddType application/x-httpd-php .php5
AddType application/x-httpd-php .php42
AddType application/x-httpd-php .php4
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php
新增類型 application/x-httpd-php .phtm
新增類型 application/x-httpd-php .phtml
新增類型 application/x-httpd-php .asp
...對我來說無效,所以我這樣做
<FilesMatch "\.(php*|phtm|phtml|asp|aspx)$">
設定處理器 application/x-httpd-php
</FilesMatch>
Apache 2.2 的另一個重點如下。
假設我們將 PHP 安裝為模組。但是對於某些目錄,我們需要使用 PHP 作為 CGI(可能是因為自定義配置)。這可以使用以下方法完成
<FilesMatch "\.(php*|phtm|phtml|asp|aspx)$">
設定處理器 無
</FilesMatch>
新增類型 application/x-httpd-php-custom .php
動作 application/x-httpd-php-custom /cgi-bin/php-huge
請注意,類型必須與「application/x-httpd-php」不同,並且您還需要停用特定副檔名的處理器。您可以進行混合配置
<FilesMatch "\.(php)$">
設定處理器 無
</FilesMatch>
新增類型 application/x-httpd-php-custom .php
動作 application/x-httpd-php-custom /cgi-bin/php-huge
在這種情況下,像 *.php5 等檔案將通過模組解析,但 *.php 將轉到 php-huge 可執行檔。
晨星 ¶2 年前
我剛剛在一台用於編寫 C 程式碼的機器上安裝了 php8.1.12。
以下是我需要在基於 Debian 的作業系統上下載的一些函式庫。
apt-get install libpcre3 libpcre3-dev
apt-get install apache2-dev
apt-get install libxml2-dev
apt-get install libsqlite3-dev
這些是我需要的缺失套件。
如果您收到關於缺少套件或函式庫的錯誤,例如當我需要 sqlite3 時,請執行以下命令
apt search sqlite3
然後您就可以看到是否有任何 dev 或 lib 套件。
apache2 的說明在 php8.1.12 時完美運作;為了滿足應用程式的某些需求,我必須像這樣執行 php configure 檔案
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pdo-mysql --with-mysqli --with-zip --enable-gd
額外的旗標允許我使用兩種 mysql,允許我利用 PHP zip 壓縮,並允許我使用 Gnatt 的東西。