2015-11-17 54 views
0

我用一個簡單的fopen語句來讀取文本文件,但我得到:PHP腳本使用的fopen拋出404未找到

的fopen(http://www.domain.nl/cees.txt):未能打開流:HTTP請求失敗! HTTP/1.1 404未找到

如果我在瀏覽器中調用http://www.domain.nl/cees.txt,內容顯示沒有任何問題,因此該文件存在(是嗎?)......

我也試着捲曲,但它也返回一個404

如果我嘗試另一臺主機上我的PHP腳本,它工作得很好,所以我想我會比較兩個主機的設置,但它們是相同的與了allow_url_fopen在兩個案例。

有沒有htaccess以及權限上rootfolder是755

我出去拉我的頭髮了這一點。任何人有任何建議?

+0

您是否嘗試過使用絕對路徑? – Naruto

+2

a)domain.nl具有由任何獲得404的主機觸發的防刮保護。b)其間的代理/網關正在過濾。所以......你有沒有訪問domain.nl的日誌來查看爲好的和不好的請求記錄了什麼? –

+0

嘗試使用curl並傳遞用戶代理 –

回答

0

這是我的嘗試:

無法到達該文件的服務器位於代理之後。 你也可以在代理之後,並且你的瀏覽器被配置爲通過。但不是你的PHP腳本。

如果使用代理,請檢查瀏覽器的配置。如果是這樣,那麼的fopen不得不使用它太:

$opts= array(
       'http' => array( 
       'proxy' => 'tcp://proxyip:8080', 
       'header' => array( 
            "Proxy-Authorization: Basic $auth" 
           ) 
       ) 
); 
$context = stream_context_create($opts); 
$file = fopen($url, 'r', false, $context) 
+0

我不是在代理之後,也不是服務器。服務器是我自己的VPS。 –

+0

仍然沒有解決方案:www.aangenaamvoedzaam.nl/scripts/fopen.php拋出404,而同樣的腳本www.cornelisdigitaal.nl工作正常。這兩個站點都在同一個VPS上,具有相同的DNS設置,並且allow_url_fopen在On .... –

0

在一個清晰的時刻,我決定檢查的httpd.conf中,發現虛擬主機行指定域包含的IP4地址,而不是IP6地址。

我添加了IP6地址,重新啓動Apache,我很快樂的小兔子!

希望這可以幫助別人...