首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 安裝為 Apache DSO 動態模組:Linux/Unix 完整編譯部署指南

     編輯:PHP 相關知識

為什麼選擇 DSO 模式?

  • 升級 PHP 無需重新編譯 Apache,只需 make clean && ./configure ... && make && make install 並重啟 Apache。
  • 模組獨立載入,記憶體佔用彈性,支援多 PHP 版本共存(不同 LoadModule 路徑)。
  • 維護性最佳,生產環境首選。

Apache 編譯安裝 (啟用 mod_so)

# 1. 下載並解壓
cd /usr/local
wget https://archive.apache.org/dist/httpd/httpd-2.0.64.tar.gz
tar zxvf httpd-2.0.64.tar.gz
cd httpd-2.0.64

# 2. 配置:指定安裝路徑、啟用 DSO 支援
./configure --prefix=/usr/local/apache2 --enable-module=so
# 或舊版寫法:--enable-shared=max

# 3. 編譯安裝
make && make install

PHP 編譯安裝 (指定 apxs 路徑)

# 1. 下載 PHP 源碼
cd /usr/local
wget https://www.php.net/distributions/php-8.2.10.tar.gz
tar zxvf php-8.2.10.tar.gz
cd php-8.2.10

# 2. 配置:指定 apxs、MySQL 路徑(視需求增減)
./configure \
  --with-apxs2=/usr/local/apache2/bin/apxs \
  --with-mysql=/usr/local/mysql \
  --with-pdo-mysql=mysqlnd \
  --with-openssl \
  --with-zlib \
  --enable-mbstring \
  --with-curl \
  --enable-fpm \
  --prefix=/usr/local/php82

# 3. 編譯安裝
make && make install

# 4. 安裝過程會自動修改 httpd.conf 加入:
# LoadModule php_module modules/libphp.so
# AddType application/x-httpd-php .php

Apache 設定微調

# httpd.conf
ServerAdmin admin@example.com
ServerName localhost:80

# PHP 檔案類型對應
AddType application/x-httpd-php .php .phtml .inc
AddType application/x-httpd-php-source .phps

# 目錄索引
DirectoryIndex index.php index.html

# 安全:隱藏版本資訊
ServerTokens Prod
ServerSignature Off

啟動與驗證

/usr/local/apache2/bin/apachectl start
# 建立測試檔
echo '' > /usr/local/apache2/htdocs/phpinfo.php
# 瀏覽器訪問 https://localhost/phpinfo.php

升級 PHP 範例

cd /usr/local/php-8.2.10
make clean
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=... (相同參數)
make && make install
/usr/local/apache2/bin/apachectl graceful  # 平滑重啟載入新模組

常見問題排查

現象原因與解決
apxs not foundApache 未啟用 --enable-so 或路徑錯誤,確認 /usr/local/apache2/bin/apxs 存在
libphp.so 載入失敗缺少依賴庫 (ldd 檢查)、SELinux 阻擋、Apache 版本不匹配 (2.2 vs 2.4)
.php 顯示原始碼缺少 AddType、DirectoryIndex、或模組未載入
權限錯誤DocumentRoot 目錄需 Require all granted (Apache 2.4)

現代部署替代方案

  • PHP-FPM + Nginx/Apache (mod_proxy_fcgi):進程管理獨立、效能更好、支援多池隔離、平滑重啟、容器化友善。
  • Docker 官方映像:php:8.2-apache, php:8.2-fpm 開箱即用。
  • 系統套件管理器:apt install php8.2 libapache2-mod-php8.2 (Ubuntu), dnf install php php-mysqlnd (RHEL/Fedora)。

結語

DSO 模式是傳統 LAMP 架構中 PHP 與 Apache 整合的黃金標準,展示了「編譯時綁定、執行時動態載入」的模組化設計智慧。雖然 PHP-FPM 已成為現代主流,但理解 DSO 原理有助於排查模組載入問題、遷移舊系統、設計可擴展的伺服器架構。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved