yum install libcurl-devel (CentOS/RHEL) 或 apt-get install libcurl4-openssl-dev (Ubuntu/Debian)。php-5.2.12),或至少主版本一致。gcc, make, autoconf 等編譯工具鏈。cd /usr/local/src/php-5.2.12/ext/curl
/usr/local/php5/bin/phpize
# 輸出應包含:
# Configuring for:
# PHP Api Version: 20041225
# Zend Module Api No: 20060613
# Zend Extension Api No: 220060519
./configure \
--with-curl=/usr/local/curl \
--with-php-config=/usr/local/php5/bin/php-config
--with-curl 指定 libcurl 安裝前綴 (含 include/curl.h, lib/libcurl.so)。--with-php-config 指定目標 PHP 的 php-config 路徑,**極其關鍵**,決定編釆產物的 API/ABI 兼容性。make
make install
# 輸出提示安裝路徑,如:
# Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/
; 確認 extension_dir 指向上述安裝目錄
extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/"
; 添加擴展
extension = curl.so
# Apache
service httpd restart
# 或 Nginx + PHP-FPM
service php-fpm restart
# 命令行
php -m | grep curl
# 輸出 curl 表示成功
# 詳細信息
php -i | grep -A 10 "curl support"
# curl support => enabled
# cURL Information => 7.xx.x
| 錯誤現象 | 原因 | 解決 |
|---|---|---|
phpize: command not found | 未安裝 php-devel / php5-dev | yum install php-devel / apt install php-dev |
configure: error: Cannot find libcurl | libcurl 未安裝或路徑錯誤 | 安裝 libcurl-devel;指定正確 --with-curl 路徑 |
make: *** [curl.lo] Error 1 | PHP 版本與源碼不匹配 / API 變更 | 確保源碼版本 = 運行版本;查看 config.log 具體錯誤 |
PHP Warning: PHP Startup: Unable to load dynamic library 'curl.so' | extension_dir 錯誤 / 依賴庫缺失 / 線程安全性不匹配 (TS/NTS) | ldd /path/to/curl.so 檢查依賴;確認 php -i 中 Thread Safety 值與編譯一致 |
# CentOS/RHEL (Remi 源)
yum install php-curl # 系統默認版本
yum install php74-php-curl # Remi 多版本
# Ubuntu/Debian
apt-get install php-curl # 默認版本
apt-get install php8.2-curl # 指定版本
# Alpine (Docker)
apk add php8-curl
包管理器自動處理依賴、API 兼容、服務重啟,**生產環境首選**。手動編譯僅用於:特殊版本需求、靜態編譯、無網絡環境、學習原理。
PHP cURL 擴展編譯安裝核心三步:**phpize → configure (指定 php-config) → make install**。關鍵在於版本一致性 (PHP 源碼、php-config、libcurl) 與php.ini 配置正確。現代運維請優先使用系統包管理器,將精力集中在業務開發上。