1. 程式人生 > >php_curl "Call to undefined function curl_init()"的解決方法

php_curl "Call to undefined function curl_init()"的解決方法

在php中可以很容易的獲取某個url的內容,file_get_contents,file或者readfile函式都可以實現,但是對於比較靈活獲取特定url的特定屬性,以上三者是沒法好好處理,而curl卻能很好地體現它的價值,源於curl_setopt的多項屬性可以設定。

這裡的curl_setopt()和curl_init()函式預設wamp環境是不支援的,所以常規步驟需要設定幾處:
1、在http://localhost/?phpinfo=1中找到Loaded Configuration File 配置項找到對應值為:Configuration File D:\wamp\bin\apache\apache2.4.2\bin\php.ini ,定位到該目錄,開啟php.ini檔案,找到“;extension=php_curl.dll”,去掉“;”,save,重啟apache;
2、把php_curl.dll(我的目錄:D:\wamp\bin\php\php5.4.3\ext)、libeay32.dll、ssleay32.dll、php5ts.dll(我的目錄:D:\wamp\bin\apache\apache2.4.2\bin)都拷到c盤system32目錄下。
正常的步驟到這一步是可以解決call to undefined function curl_init()的問題,在伺服器根目錄www下編輯index.php,程式碼如下:


 <?php 
 $ch = curl_init(); 

 curl_setopt ($ch, CURLOPT_URL, "http://jwc.scau.edu.cn/"); 
 //curl_setopt ($ch, CURLOPT_HEADER, 0); 

 curl_exec ($ch); 

 curl_close ($ch); 
 ?> 

執行該程式碼還是出現了call to undefined function curl_init()的問題,而網上找到的解決方案和上面介紹的步驟也是差不多,此時的內心是·····

峰迴路轉,無意找到了一篇特別的情況,見http://back.waitalone.cn/post/wamp_win7_curl.html


所以在win10的系統直接搜尋“事件檢視器”。看到了好東西,果然,看到了事件查詢器的警告提示,如下截圖:
這裡寫圖片描述
錯誤的提示情況的描述:“d:\wamp\bin\php\php5.4.3\ext\php_curl.dll”的啟用上下文生成失敗。 找不到從屬程式Microsoft.VC90.DebugCRT,processorArchitecture=”amd64”,publicKeyToken=”1fc8b3b9a1e18e3b”,type=”win32”,version=”9.0.21022.8”。 請使用 sxstrace.exe 進行詳細診斷。
所以認為是環境的php_curl有問題,所以重新下載了一個php_curl.dll,並覆蓋了之前的檔案,下載連結:
http://www.mediafire.com/download/3ay381k3cq59cm2/php_curl-5.4.3-VC9-x64.zip

果然,下載完覆蓋c盤system32目錄下的php_curl.dll,重啟,執行index.php檔案,執行成功。
所以最後總結的結果,還是原來的php_curl.dll有問題。