首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 5.6.11 Apache 環境下 CURL 擴展無法載入解決方案

     編輯:PHP 綜合知識

問題現象

在 Windows 環境下,PHP 5.6.11 已在 php.ini 啟用 extension=php_curl.dll,IIS 運行正常,但 Apache (httpd) 啟動後 phpinfo() 完全看不到 curl 區塊,cURL 相關函數呼叫無反應、不報錯。

嘗試過無效的方案

  • 設定系統環境變數 PHPRC、Path 指向 PHP 目錄。
  • 將 php_curl.dll 複製到 Apache 的 bin 目錄。
  • 確認 Apache bin 目錄已存在 libeay32.dll、ssleay32.dll(OpenSSL 相依)。

真正解決方法

將 PHP 根目錄下的 libssh2.dll 複製到 Apache 的 bin 目錄,重啟 Apache 即可。

原因分析

PHP 5.6 的 php_curl.dll 依賴 libssh2.dll(支援 SCP/SFTP 協定)。IIS 以模組/ISAPI 方式載入 PHP,會自動搜尋 PHP 目錄下的 DLL;Apache 載入 php5apache2_4.dll 時,工作目錄為 Apache 的 bin 目錄,系統預設 DLL 搜尋順序不會自動查找 PHP 目錄,導致 libssh2.dll 找不到,進而造成 php_curl.dll 靜默載入失敗(不報錯、不顯示於 phpinfo)。

操作步驟總結

  1. 找到 PHP 安裝根目錄下的 libssh2.dll。
  2. 複製到 Apache 安裝目錄下的 bin 資料夾(與 httpd.exe 同層)。
  3. 重啟 Apache 服務。
  4. 瀏覽 phpinfo() 確認 curl 區塊出現,版本資訊正常。

補充:Linux 環境下的對應處理

Linux 下通常透過套件管理器安裝 php-curl(如 apt-get install php5.6-curl 或 yum install php-curl),會自動處理相依庫(libcurl、libssh2 等),無需手動複製檔案。

總結

Windows + Apache + PHP 5.6 環境下,php_curl.dll 需要 libssh2.dll 置於 Apache bin 目錄才能正常載入。這是因為 Apache 的工作目錄機制導致 DLL 搜尋路徑不包含 PHP 目錄。記住這一招,未來升級 PHP 版本時同理可解決類似「擴展啟用了但 phpinfo 不顯示」的問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved