我有以下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服务器上失败:
似乎它正在尝试验证XML,这是完全没必要的。有没有办法可以禁用此功能或进一步调查出现了什么问题?
当我查看回复的来源时,我看到以下内容:
无法打开流: /home/livshin/public_html/wp-content/uploads/_radio/songinfo.php 在 16 行上拒绝连接
它在本地工作正常,但在线失败?我该如何进一步调试呢?
答案 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)
我有完全相同的问题。解决方案是设置时区。