Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

解決 PHP「伺服器不支援 curl」:Windows/Linux 環境啟用 cURL 擴充功能完整教學

編輯:Linux 系統常見問題解答

問題現象

執行 PHP 程式呼叫 curl_exec() 時出現錯誤:「Call to undefined function curl_exec()」或「伺服器不支援 curl」,代表 PHP 未載入 cURL 擴充功能。

Windows 環境啟用步驟

  1. 複製 PHP 目錄下的四個 DLL 到系統目錄(或 Apache/PHP 目錄):
    • libeay32.dll
    • ssleay32.dll
    • php5ts.dll(PHP 7+ 為 php7ts.dll/php8ts.dll)
    • php_curl.dll
  2. 編輯 php.ini:
    • 確認 extension_dir 指向正確的 ext 目錄。
    • 找到 ;extension=php_curl.dll,移除前面分號(;)。
  3. 重新啟動 Apache 或 IIS 服務。

Linux 環境啟用步驟

方法一:重新編譯 PHP 並加入 --with-curl

# 1. 安裝 cURL 庫
wget https://curl.se/download/curl-7.88.1.tar.gz
tar -zxf curl-7.88.1.tar.gz
cd curl-7.88.1
./configure --prefix=/usr/local/curl
make && make install

# 2. 重新編譯 PHP
cd php-source-directory
./configure --with-curl=/usr/local/curl ...(其他原有參數)
make && make install

方法二:動態編譯 curl.so 擴充模組(不重編 PHP 主程式)

cd php-source-directory/ext/curl
phpize
./configure --with-curl=/usr/local/curl
make
# 產生 modules/curl.so
cp modules/curl.so /usr/lib/php/extensions/  # 依實際 extension_dir 調整
echo "extension=curl.so" >> /etc/php.ini
# 重啟 php-fpm / Apache

驗證測試程式

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.google.com");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_exec($ch);
curl_close($ch);
?>

輸出 Google 首頁 HTML 即代表成功。

常見坑點提醒

  • Windows:DLL 複製到 System32 可能因權限失敗,建議放在 Apache 的 bin 目錄或 PHP 根目錄,並確認 PATH 環境變數包含該路徑。
  • Linux:phpize 需安裝 php-devel/php-dev 套件。
  • PHP 7.2+ 內建使用 libcurl 4,舊版 OpenSSL 可能導致 SSL 連線失敗,需更新系統套件。

小結

Windows 只需調整 php.ini 複製 DLL;Linux 建議透過套件管理器 yum install php-curl 或 apt install php-curl 一鍵搞定,除非特殊版本需求才手動編譯。

Copyright © Windows教程網 All Rights Reserved