文档末尾的额外内容

时间:2011-10-28 21:04:40

标签: php

我有以下PHP代码,它只是抓取HTTP-Basic身份验证后面的URL并重新提供它:

<?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机器上本地没有任何问题(v.5.3.5),但在运行5.2.14的客户端的另一台Linux服务器上失败:

enter image description here

似乎它正在尝试验证XML,这是完全没必要的。有没有办法可以禁用此功能或进一步调查出现了什么问题?

当我查看回复的来源时,我看到以下内容:

  

无法打开流: /home/livshin/public_html/wp-content/uploads/_radio/songinfo.php 16 行上拒绝连接

它在本地工作正常,但在线失败?我该如何进一步调试呢?

3 个答案:

答案 0 :(得分:2)

尝试一个简单的测试用例,看看您是否可以访问任何互联网网站。例如<?php echo file_get_contents('http://google.com'); ?>假设代码和配置(用户名/密码)在本地计算机和服务器上是相同的,那么问题必须是服务器本身在某种程度上是不同的(例如,没有Internet访问权限)。 / p>

要检查的另一件事是服务器上的PHP配置。可以使用allow_url_fopen设置禁用打开包含file_get_contents()的网址。

答案 1 :(得分:0)

该错误实际上来自浏览器,它解释了从php脚本中获得的结果。

我正在使用Mac上的Safari,当我的php脚本生成一些错误消息时,我看到同样的事情。

要查看脚本返回的真实文本(即有用的错误消息),我必须显示源代码。

在Safari中显示源代码,您需要转到“首选项 - 高级”,然后选中“显示开发菜单...”。然后,当显示错误时,从“开发”菜单中选择“显示页面源”。

然后确保从显示文本的框上方的选择器中选择“源代码”而不是“DOM树”。

希望有所帮助!

答案 2 :(得分:0)

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