我有一个非常简单的脚本,可以在大多数网站上完美运行,但不能在我希望它使用的主站点上运行 - 下面的代码可以完美地访问示例站点。但是,当我在我想访问http://www.livescore.com的网站上使用它时,我收到错误
这很有效。
<?php
$url = "http://www.cambodia.me.uk";
$page = file_get_contents($url);
$outfile = "contents.html";
file_put_contents($outfile, $page);
?>
这不起作用.....
<?php
$url = "http://www.livescore.com";
$page = file_get_contents($url);
$outfile = "contents.html";
file_put_contents($outfile, $page);
?>
并给出以下错误
警告:file_get_contents(http://www.livescore.com) [function.file-get-contents]:无法打开流:HTTP请求 失败!在C:\ Program Files中找不到HTTP / 1.0 404 (x86)\ EasyPHP-5.3.8.1 \ www \ Livescore \ attempt-1-read-page.php第3行
感谢您的帮助
答案 0 :(得分:0)
很可能www.livescore.com正在进行隐藏的重定向,而file_get_contents基本上无法捕获。
您的服务器上是否安装了lynx
?
$page= shell_exec("lynx -source 'http://www.livescore.com'");
lynx
是一个完整的浏览器,可以绕过&#39;某些重定向。
答案 1 :(得分:0)
通常情况下,您可以对file_get_contents
说明重定向:
$context = stream_context_create(
array(
'http' => array(
'follow_location' => true
)
)
);
$html = file_get_contents('http://www.example.com/', false, $context);
此网站尝试分析User-agent
http标头,如果找不到则会失败。尝试添加一些user-agent
标题:
<?php
$context = stream_context_create(
array(
'http' => array(
'header' => "User-agent: chrome",
'ignore_errors' => true,
'follow_location' => true
)
)
);
$html = file_get_contents('http://www.livescore.com/', false, $context);
echo substr($html, 0, 200)."\n";