2011-10-31 251 views
0

我有它運行在我的電腦上正常,但無法在網上下面的代碼:的file_get_contents:連接被拒絕

<?PHP 
    header("Content-Type: text/plain"); 

    $username = "username"; 
    $password = "password"; 
    $url = "http://s6.voscast.com:7158/admin.cgi?mode=viewxml"; 

    $context = stream_context_create(array(
     'http' => array (
      'method' => "GET", 
      'header' => "Authorization: Basic ".base64_encode($username.":".$password)."\r\n". 
         "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Ubuntu/11.04 Chromium/14.0.835.202 Chrome/14.0.835.202 Safari/535.1" 
     ) 
    )); 

    print file_get_contents($url, false, $context); 
?> 

這完全本地工作;我能夠獲取HTTP-Basic身份驗證背後的URL並將其打印出來。

然而,當我把它上傳到我的服務器,它不工作,並吐出了這一點:

<br /> 
<b>Warning</b>: file_get_contents(http://s6.voscast.com:7158/admin.cgi?mode=viewxml) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: Connection refused in <b>/home/livshin/public_html/wp-content/uploads/_radio/songinfo.php</b> on line <b>16</b><br /> 

有沒有一種方法,我可以在此得到一個堆棧跟蹤或東西,將至少給我更好的信息出了什麼問題?

*我已經過測試,確保類似file_get_contents("http://google.com/")這樣的東西在服務器上正常工作。

+4

您的服務器可能不允許在端口7158上傳出連接。位於端口80上的Google正常工作。你能改變防火牆嗎? – Ryan

+1

「堆棧跟蹤」最好的辦法是使用服務器上的網絡監視器,並觀察與該服務器的連接會發生什麼情況。試一試,你可以將標題設置爲一個數組(而不是用「\ r \ n」')作爲字符串。根據內部註冊的'http://'streamwrapper,這可能會有所不同。但不保證這是有效的。你有SSH訪問服務器(shell)嗎?也許在命令行中使用'curl -v',你會得到更多的信息,特別是那個部分,就像minitech所評論的那樣。 – hakre

+0

@minitech這絕對聽起來像這個問題。剛剛要求SSH訪問。 –

回答

1

您的服務器可能不允許在端口7158上傳出連接。位於端口80上的Google正常工作。您可能需要更改防火牆。