PHP cURL 擴展提供強大的 URL 傳輸功能,支援 HTTP/HTTPS/FTP/FTPS/SCP/SFTP/LDAP 等協議,是 fsockopen 等原生函式的優秀替代。本文提供兩種安裝方式:獨立編譯 cURL 再編譯 PHP、PHP 源碼目錄下編譯共享模組,含常見錯誤排查與 php.ini 設定。
wget https://curl.haxx.se/download/curl-7.18.2.tar.gz
tar -zxvf curl-7.18.2.tar.gz
cd curl-7.18.2
./configure --prefix=/usr/local/curl
make && make install./configure --with-curl=/usr/local/curl [其他參數...]
make && make installext/curl:
cd /usr/local/src/php-5.2.1/ext/curl
phpize
./configure --with-curl=/usr/local/curl
常見錯誤:configure: error: Cannot find php-config
解決:指定 php-config 路徑:
./configure --with-curl=/usr/local/curl --with-php-config=/usr/local/php/bin/php-configmake
cp modules/curl.so /usr/local/php/lib/php/extensions/no-debug-zts-20060613/
目標目錄請依實際 php.ini 中 extension_dir 設定。
php.ini 載入擴展:
extension="/usr/local/php/lib/php/extensions/no-debug-zts-20060613/curl.so"apachectl -k restart # Apache
# 或 systemctl restart php-fpm # PHP-FPMphp -m | grep curl
# 或建立 phpinfo.php 檢視 cURL 區塊
# 輸出應包含:cURL support => enabled, cURL Information => 7.18.2
| 問題 | 原因與解決 |
|---|---|
phpize 找不到 | 安裝 php-devel 或 php5-dev 套件 |
configure 找不到 curl/curl.h | cURL 開發套件未裝:yum install libcurl-devel 或確認 --with-curl 路徑正確 |
| 模組載入失敗 (undefined symbol) | PHP 版本與編譯時不符 (如 ZTS/非 ZTS、API 版本)。請確保 phpize、php-config 來自目標 PHP 安裝 |
| HTTPS 請求失敗 | cURL 編譯未支援 OpenSSL:重編 cURL 加入 --with-ssl 或 --with-openssl |