2011-10-28 62 views
0

我已經簡單地抓住後面的HTTP基本身份驗證和URL下面的PHP代碼重新成爲它:額外的內容

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

    $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); 
?> 

這工作沒有任何問題,在本地對我的Linux Mint的11機(訴5.3.5),但其運行5.2.14客戶端的另一臺Linux服務器上失敗:

enter image description here

好像它試圖驗證XML,這是完全不必要的。有沒有一種方法可以禁用此功能或進一步調查哪些問題出在哪裏?

當我看着響應的來源,我看到以下內容:

未能打開流:連接在/家庭/ livshin /的public_html /可溼性粉劑內容/上傳/ _radio/songinfo拒絕在線.PHP

它的正常工作本地,但在網上失敗?我怎樣才能進一步調試呢?

+0

您是否在瀏覽器中查看了頁面的源代碼,以查看還有哪些內容正在追加?無論哪種方式,除非您實際輸出有效的xml,否則您將無法禁用該錯誤。 –

+0

編輯我的問題,並在響應中發生錯誤。看起來'file_get_contents'出於某種原因在線失敗。在線服務器和我的本地計算機有什麼區別? –

+0

如果您向瀏覽器發送內容並將其聲明爲XML,則會嘗試將其作爲XML處理。您應該確保發送有效的XML,讓瀏覽器使用「text/plain」MIME類型將其顯示爲文本,或讓瀏覽器使用「Content-Disposition」下載文件。 – millimoose

回答

2

嘗試一個簡單的測試案例,看看你是否可以訪問任何互聯網網站。例如<?php echo file_get_contents('http://google.com'); ?>假設您的本地計算機和服務器上的代碼和配置(用戶名/密碼)是相同的,那麼問題一定是服務器本身在某些方面有所不同(例如,無法訪問Internet)。

另一件要檢查的是服務器上的PHP配置。使用allow_url_fopen設置可以禁用打開URL爲file_get_contents()的URL。

+0

我可以在服務器上做到這一點。有沒有辦法可以獲得詳細的堆棧跟蹤? –

+0

事實證明(請參閱http://j.mp/tLLeNo),問題是由於服務器不允許TCP 7158上的出站連接引起的。 –

0

該錯誤實際上是從被解釋它從PHP腳本得到的結果瀏覽器的到來。

我在Mac上的Safari,並且當通過我的PHP腳本產生了一些錯誤信息,我看到了同樣的事情。

要查看腳本返回的實際文本(即有用的錯誤消息),我必須說明的源代碼。

在Safari中顯示您需要去首選項 - 高級,並檢查源「顯示開發菜單...」。然後,當顯示錯誤時,從「開發」菜單中選擇「顯示頁面源」。

然後確保你從選擇器正上方顯示的文本框中選擇「源代碼」,而不是「DOM樹」。

希望有幫助!

0

我有完全相同的問題。解決方案是設置時區。

相關問題