# 1. 解壓源碼
gunzip apache_1.3.x.tar.gz
tar xvf apache_1.3.x.tar
gunzip php-3.0.x.tar.gz
tar xvf php-3.0.x.tar
# 2. 配置 Apache(僅指定前綴,不編譯)
cd apache_1.3.x
./configure --prefix=/www
cd ../php-3.0.x
# 3. 配置 PHP 3(指定 Apache 源碼路徑、MySQL、track_vars)
./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars
make
make install
# 4. 重新配置 Apache 並靜態連結 PHP 3 模組
cd ../apache_1.3.x
./configure --prefix=/www --activate-module=src/modules/php3/libphp3.a
make
make install
# 5. 複製 PHP 設定檔
cd ../php-3.0.x
cp php3.ini-dist /usr/local/lib/php3.ini
# 若需自訂 php.ini 路徑,configure 時加 --with-config-file=/path
# 6. 編輯 Apache 設定啟用 PHP 3 解析
# httpd.conf 或 srm.conf 加入:
AddType application/x-httpd-php3 .php3
# 副檔名可自訂,.php3 為慣例
| 步驟 | 目的 | 關鍵參數 |
|---|---|---|
| Apache 首次 configure | 生成 Makefile、確定安裝路徑 | --prefix=/www |
| PHP configure | 生成 PHP 靜態庫 libphp3.a,嵌入 Apache 模組介面 | --with-apache=../apache_1.3.x 指定 Apache 源碼目錄 |
| PHP make install | 將 libphp3.a 複製到 Apache 模組目錄 | 產出 src/modules/php3/libphp3.a |
| Apache 二次 configure | 啟用 PHP 3 模組並重新編譯 httpd | --activate-module=src/modules/php3/libphp3.a |
| Apache make install | 安裝含 PHP 3 模組的 httpd 二進制檔 | 覆蓋原有 httpd 或備份後替換 |
./configure --with-mysql=/usr/local/mysql 指定安裝路徑。libphp3.a 產生失敗:確認 --with-apache 路徑正確,Apache 源碼未被修改。undefined symbol: php3_module:二次 configure 未加 --activate-module 或路徑錯誤。AddType 是否生效、httpd.conf 是否重載、副檔名拼寫。PHP 3 於 1998 年釋出,確立了「嵌入式腳本 + 模組化數據庫驅動」架構,奠定 PHP 統治動態 Web 十年基石。現代部署已全面轉向 PHP 7/8 + php-fpm + Nginx/Apache Event MPM,但理解靜態模組編譯流程有助於掌握 SAPI(Server API)演進邏輯。