file_get_contents外網的url完全沒問題,但是如果要擷取原生url(比如http://localhost/index.php)就會報下面的錯:
A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond) while reading response header from upstream, client: 124.2xx.xxx.xxx, server: www.xxx.com, request: "GET /index.php HTTP/1.0", upstream: "fastcgi://127.0.0.1:9000", host: "www.xxx.com"
在網上找了這麼一篇文章, http://www.codesky.net/article/201106/174247.html 但不知在Windows下面如何操作,或者有其他辦法麼,求助了
回複討論(解決方案)
試著給那函數加了時間,也無效,比如:
array( 'timeout' => 1 //設定一個逾時時間,單位為秒 ) ) ); file_get_contents("http://example.com/", 0, $ctx); ?>
也試著換成curl,依舊無效,如:
$ch = curl_init();$timeout = 5;curl_setopt ($ch, CURLOPT_URL, 'http://localhost/index.php');curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);$con = curl_exec($ch);curl_close($ch);
註:url是外網的完全沒問題,只要是系統伺服器和url所在伺服器是同一個,就出不來,崩潰中
修改hosts 弄個網域名稱解析到本地
使用網域名稱方式訪問就可以解決了吧
或者直接ip地址試看看
修改hosts 弄個網域名稱解析到本地
使用網域名稱方式訪問就可以解決了吧
或者直接ip地址試看看
是的,我也正是這樣啊
檢查一下php.ini裡,是不是 allow_url_fopen = 1?
另外嘗試用include替換file_get_contents,擷取localhost的頁面。
檢查一下php.ini裡,是不是 allow_url_fopen = 1?
另外嘗試用include替換file_get_contents,擷取localhost的頁面。
allow_url_fopen確定是開啟的
試過了用include,居然很卡很卡,然後在逾時的那一刻達到了我想要的結果,但終究不是我想要的:按理說我要擷取的內容應該在一秒鐘以內就可以搞定。
雖然目前已找到其他辦法解決,但仍然表示疑惑,想不通為什麼,難道是nginx+php5.3在Windows下的bug?
bug?沒這個說法吧。檢查你的代碼。
首先 http://localhost/index.php 裡用簡單的代碼,比如 echo "hello world"; 是不是簡單的代碼也是這種情況嗎?
其次,用chrome或者firebug,看一下request header的情況,以及瀏覽器的cookies。或者不用瀏覽器測試,用windows內建的命令提示字元測試。 運行 -> cmd 斷行符號 -> php c:\www\index.php 斷行符號。看看dos介面下是否返回結果?
也遇到同樣問題
和其他人對比 感覺 是
這個的問題,
mark 坐等高手
也遇到同樣問題
和其他人對比 感覺 是
這個的問題,
mark 坐等高手
兄台也是想擷取本地某個url的內容?我其實是用該功能用來產生靜態,不知道兄台用來做什麼,呵呵,有點好奇。
但是我用其他辦法解決了,就是用ajax請求本地的url,效果也是一樣的。
遇到相同的問題。 請教樓主現在有解嗎
相同問題,請教
function __curl_get($url){
/*print_r(phpinfo());exit;*/
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$ret = curl_exec($ch);
curl_close($ch);
return $ret;
}
抓取網頁用這個函數就好了。要把curl_init()這個擴充添加了才能使用