nginx+php5.3.20下,file_get_contents無法使用,求助

來源:互聯網
上載者:User
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()這個擴充添加了才能使用

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.