2012-02-06 113 views
0

當我在我的網站的一個運行下面的代碼:空白頁8080

<?php 
    $thing = file_get_contents("http://mywebsite.com:8080/Public"); 
    echo($thing); 
    ?> 

它返回預期的結果,http://mywebsite.com:8080/Public

但是,當內容我在我的另一個網站(由另一家公司託管的)上運行它,它不顯示任何內容。沒有錯誤,而不是http://mywebsite:8080/Public的內容。但是,如果我運行以下代碼:

<?php 
    $thing = file_get_contents("http://somerandomwebsite.com"); 
    echo($thing); 
    ?> 

它返回somerandomwebsite.com的內容。是否有一個原因爲什麼它在一個網站上運行,而不是另一個?爲什麼只有端口是80時才能獲取文件的內容?

回答

0

file_get_contents失敗,因爲它無法檢索手頭的內容。最有可能的是,一個簡單的防火牆阻止所有流量到非80端口。您必須使用端口80來避免這些簡單的防火牆。

未能下載資源會使PHP發出警告。很可能,生產服務器上不會顯示警告。檢查服務器的日誌和display_errorserror_reporting配置。

+0

有沒有不同的方法來繞過防火牆,因爲沒有辦法修改我需要連接的端口 – DontTurnAround 2012-02-06 00:41:12

+0

@ user1036238您可以設置一個代理,不是嗎?只需選擇一個域,並將所有HTTP請求(在端口80上)代理到域8080端口上的正確域。除此之外,您可以嘗試使用HTTPS,但這不太可能。爲什麼你認爲沒有辦法修改你需要連接的端口? – phihag 2012-02-06 00:45:14

+0

我試圖連接的網站是由Minecraft服務器包裝器McMyAdmin運行的網絡服務器。所以設置代理並不是一個真正的選擇。我只想使用8080而不是80,但如果它是唯一的選擇,我可以更改它 – DontTurnAround 2012-02-06 00:50:15

1

如果允許PHP發出外部請求,請諮詢您的託管服務提供商。一些共享主機提供商禁用了該功

+0

我不認爲是這種情況,因爲請求正與somerandomwebsite.com一起工作,只是不是http://mywebsite.com:8080/Public – DontTurnAround 2012-02-06 00:39:36

+0

同樣的原則適用,有時某些端口因安全原因被阻塞。例如,Hosgator塊8080. – 2012-02-06 00:44:39