將 PHP 目錄下四個關鍵 DLL 複製到 系統目錄(C:\Windows\System32)或 PHP 目錄已在 PATH 中則可跳過:
libeay32.dll (OpenSSL 核心)ssleay32.dll (OpenSSL 核心)php5ts.dll / php7ts.dll / php8ts.dll (PHP 執行緒安全核心)php_curl.dll (cURL 擴展本體)注意:PHP 7.2+ 已改用 libcrypto-*.dll、libssl-*.dll,請依實際版本複製對應檔案。
; 1. 確認 extension_dir 指向 ext 目錄
extension_dir = "C:/php/ext" ; 依實際路徑修改
; 2. 開啟 cURL 擴展 (去掉分號)
extension=curl
; PHP 7.2+ 可能為 extension=curl (無 .dll 後綴)
iisreset 或重啟 Apache 服務。curl_test.php:<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.google.com");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 測試用,生產請配置 CA
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$output = curl_exec($ch);
if (curl_errno($ch)) {
echo "cURL Error: " . curl_error($ch);
} else {
echo "cURL OK! Response length: " . strlen($output);
}
curl_close($ch);
?>
瀏覽器訪問,輸出 cURL OK! 即成功。
| 發行版 | 指令 |
|---|---|
| CentOS/RHEL 7/8/9 | yum install php-curl / dnf install php-curl |
| Ubuntu/Debian | apt update && apt install php-curl |
| Alpine | apk add php-curl |
安裝後自動生成 /etc/php.d/20-curl.ini 或修改 php.ini,重啟 PHP-FPM/Apache 即可。
# 1. 安裝開發工具與 libcurl 開發包
yum install gcc php-devel libcurl-devel openssl-devel # CentOS
apt install php-dev libcurl4-openssl-dev pkg-config # Ubuntu
# 2. 進入 PHP 原始碼 ext/curl 目錄
cd /usr/src/php-7.4.33/ext/curl # 依實際版本路徑
# 3. phpize 生成配置
phpize
# 4. 配置、編譯、安裝
./configure --with-curl=/usr
make && make install
# 5. 輸出提示安裝路徑,例如 /usr/lib64/php/modules/curl.so
# 6. 編輯 php.ini 添加 extension=curl.so
# 7. 重啟 php-fpm / httpd
適用於無法編譯、需特定版本場景:
php-*-Win32-VS15-x64.zip (Windows) 或 php-*.tar.gz (Linux)。ext/php_curl.dll 或 modules/curl.so。| 現象 | 原因 | 解決 |
|---|---|---|
| PHP 啟動報 "Unable to load dynamic library 'curl'" | 缺少 OpenSSL DLL (Windows) / libcurl.so (Linux) | 複製 libeay32/ssleay32 到 System32 / 安裝 libcurl-devel |
| cURL Error 60: SSL certificate problem | 缺少 CA 憑證包 | Windows: 下載 cacert.pem 設定 curl.cainfo;Linux: yum install ca-certificates |
| extension=curl 已開啟但 phpinfo() 無 curl 區塊 | 載入順序錯誤 / 線程安全性不匹配 (TS vs NTS) | 確認 PHP 版本 (TS/NTS) 與擴展匹配、檢查 extension_dir |
| Windows: The specified module could not be found | 缺少 VC++ Redistributable | 安裝對應版本 Visual C++ Redistributable (VC14/VC15/VC16) |
curl.cainfo 指向有效 CA 憑證。CURLOPT_CONNECTTIMEOUT_MS、CURLOPT_TIMEOUT_MS,防止掛死。curl_init() 句柄,或使用 curl_multi_* 並發。curl_exec、curl_errno、curl_error,記錄請求 ID、URL、耗時、回應碼。Windows 靠複製 4 個 DLL + 改 php.ini,Linux 靠包管理器一鍵裝。核心邏輯:PHP 核心 + OpenSSL + libcurl + cURL 擴展 四者版本對齊、依賴完整。驗證請用 php -m | grep curl 與實際請求測試雙重確認。