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

PHP 擴展編譯安裝通用流程:以 Swoole 為例的標準化步驟

     編輯:PHP 相關知識

適用場景

所有需從原始碼編譯的 PHP 擴展(PECL 套件、GitHub 專案、自研擴展),通用標準流程。

完整步驟(以 Swoole 1.7.21 為例)

  1. 下載原始碼
    wget https://pecl.php.net/get/swoole-1.7.21.tgz
  2. 解壓縮
    tar zxvf swoole-1.7.21.tgz
  3. 進入目錄
    cd swoole-1.7.21
  4. 準備編譯環境 (phpize)
    /usr/local/php/bin/phpize

    注意:務必使用目標 PHP 版本對應的 phpize,路徑視安裝前綴而定。若 PATH 已包含正確 phpize,可直接輸入 phpize。

  5. 配置編譯選項
    ./configure --with-php-config=/usr/local/php/bin/php-config

    同理,指定正確的 php-config 路徑。若需啟用特定功能(如 --enable-openssl、--enable-http2),參考 ./configure --help 添加。

  6. 編譯
    make
  7. 測試(強烈建議)
    make test

    確保無錯誤、無核心測試失敗。若有失敗,檢查相依套件(如 libssl、libcurl)版本是否符合。

  8. 安裝
    make install

    輸出範例:

    Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/

    此路徑即為 extension_dir,swoole.so 將置於此處。

  9. 修改 php.ini 載入擴展
    vim /usr/local/php/lib/php.ini
    # 在 [PHP] 或擴展區塊加入
    extension=swoole.so
  10. 重啟 PHP-FPM 生效
    service php-fpm reload
    # 或
    service php-fpm restart

驗證安裝

php -m | grep swoole
# 或
php -r "var_dump(extension_loaded('swoole'));"

常見問題排查

錯誤現象可能原因解決方向
phpize: not found未安裝 php-dev / php-devel 套件apt-get install php5-dev / yum install php-devel
configure: error: Cannot find php-config路徑錯誤或未安裝 php-dev確認 php-config 絕對路徑
make: *** [swoole.lo] Error 1缺少相依庫開發套件(如 openssl-devel)安裝對應 -devel 套件後重跑 configure
啟動報 Unable to load dynamic libraryextension_dir 不對、so 檔缺失、PHP 版本不匹配(ZTS/non-ZTS、API 版本)核對 phpinfo() 中的 extension_dir、Thread Safety、PHP API 版本

自動化腳本範例 (Bash)

#!/bin/bash
set -e
EXT_NAME="swoole"
EXT_VERSION="1.7.21"
PHP_PREFIX="/usr/local/php"

cd /tmp
wget -q "https://pecl.php.net/get/${EXT_NAME}-${EXT_VERSION}.tgz"
tar zxf "${EXT_NAME}-${EXT_VERSION}.tgz"
cd "${EXT_NAME}-${EXT_VERSION}"

"${PHP_PREFIX}/bin/phpize"
./configure --with-php-config="${PHP_PREFIX}/bin/php-config"
make -j$(nproc)
make test
make install

echo "extension=${EXT_NAME}.so" > "${PHP_PREFIX}/lib/php.d/${EXT_NAME}.ini"
service php-fpm reload
echo "${EXT_NAME} ${EXT_VERSION} installed successfully."

總結

掌握 phpize → configure → make → make test → make install → php.ini → reload 這套標準流程,即可應對絕大多數 PHP 擴展的部署需求。關鍵在於「使用正確版本的 phpize/php-config」與「完整跑 make test」。

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