为什么服务器无法获取网站的标题?

时间:2013-07-09 19:17:36

标签: php curl

我想获得一个网站的标题。此代码在我的计算机上完美运行,但在服务器上运行不顺畅。在服务器上,它无法获取网址内容。在我的电脑上,它很容易重定向。

<?php
ini_set('max_execution_time', 300);
  $url = "http://www.cricinfo.com/ci/engine/match/companion/597928.html";
  if(strpos( $url, "companion" ) !== false)
  {
    $url = str_replace("/companion","",$url);
  }

$html= file_get_contents($url); 
echo $html;
//parsing begins here:
$doc = new DOMDocument();
@$doc->loadHTML($html);
$nodes = $doc->getElementsByTagName('title');

//get and display what you need:
$title = $nodes->item(0)->nodeValue;

$msg1 = current(explode("|", $title));
$msg=rawurlencode($msg1);
echo $msg;
if(empty($msg))
{
   echo "no data to send";
}
else
{
header("Location:fullonsms.php?msg=" .$msg);
}
exit();
?>

服务器上的输出是http://sendmysms.bugs3.com/cricket/fetch.php

1 个答案:

答案 0 :(得分:3)

看来fopen包装器没有启用。正如您在php docs for file_get_contents的notes部分中所看到的,allow_url_fopen必须设置为true才能打开带有file_get_contents的URL。尝试在服务器上运行以下命令,看看是否可以将file_get_contents与url一起使用。

echo "urls ";
echo (ini_get('allow_url_include')) ? "allowed" : "not allowed";
echo " in file_get_contents.";

如果说“file_get_contents&#39;中不允许使用网址”那么你需要通过php.ini,.htaccess文件,apache配置或一些这样的等价物来更新设置。也就是说,如果您想继续使用file_get_contents来访问该URL。如果您安装了php curl扩展,则另一个选择是使用curl。

P.S。我知道这是调用file_get_contents的一个问题,因为你可以看到他的脚本在设置后回显了$ html变量。他在服务器上的脚本链接并没有输出任何html,告诉我这是抓取html而不是html解析器的问题。