2011-10-28 59 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

我有完全相同的问题。解决方案是设置时区。

相关问题