Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

Windows/Linux 啟用 PHP cURL 擴展完整指南:從檔案部署到驗證測試

編輯:關於伺服器

Windows 環境(IIS / Apache)

核心檔案部署

將 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,請依實際版本複製對應檔案。

php.ini 配置

; 1. 確認 extension_dir 指向 ext 目錄
extension_dir = "C:/php/ext"  ; 依實際路徑修改

; 2. 開啟 cURL 擴展 (去掉分號)
extension=curl
; PHP 7.2+ 可能為 extension=curl  (無 .dll 後綴)

重啟服務並驗證

  1. iisreset 或重啟 Apache 服務。
  2. 建立測試腳本 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! 即成功。

Linux 環境(CentOS/RHEL/Ubuntu/Debian)

方法一:包管理器一鍵安裝(推薦)

發行版指令
CentOS/RHEL 7/8/9yum install php-curl / dnf install php-curl
Ubuntu/Debianapt update && apt install php-curl
Alpineapk 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 官網下載預編譯二進制(舊版本救援)

適用於無法編譯、需特定版本場景:

  1. 訪問 PHP 歸檔下載頁,下載對應版本 php-*-Win32-VS15-x64.zip (Windows) 或 php-*.tar.gz (Linux)。
  2. 解壓取出 ext/php_curl.dll 或 modules/curl.so。
  3. 替換現有擴展檔案,重啟服務。

常見問題排查表

現象原因解決
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)

生產環境最佳實踐

  • ✅ 啟用 CURLOPT_SSL_VERIFYPEER/VERIFYHOST,配合 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 與實際請求測試雙重確認。

Copyright © Windows教程網 All Rights Reserved