3

由于流量很大,我最近升级了我网站的服务器。在新服务器上,PHP 的某些方面似乎被破坏了。我有一个非常具体的代码不起作用。但是,由于版权原因,我只能向您展示非机密等价物:

<?php
echo file_get_contents('http://www.google.com');
?>

这段代码在升级之前绝对完美无缺,现在这里或那里的一些奇怪的设置阻止了这段代码的工作。

具体来说,该file_get_contents功能根本不起作用,无论您输入什么外部 URL(file_get_contents('index.php')工作正常);

任何帮助表示赞赏!

更新 #1
此代码也不起作用:

<?php
ini_set("allow_url_fopen", "On");
echo file_get_contents('http://www.google.com');
?>

更新 #2
此代码有效...

<?php
    ini_set("allow_url_fopen", "On");
    $url = "http://www.google.com/";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $data = curl_exec($ch);
    curl_close($ch);
    echo $data;
?>

...但是如果我尝试做simplexml_load_file($data);坏事就会发生。如果我这样做也一样simplexml_load_file('http://www.google.com')...

4

4 回答 4

2

首先检查file_get_contents 返回值。如果该值为 FALSE,则它无法读取它。如果该值为 NULL,则该函数本身被禁用。

于 2013-05-25T09:35:16.457 回答
2

改用 CURL。

$url = "http://google.com/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);

内容将存储在 $data 中。

于 2013-05-25T09:37:49.260 回答
1

我找到了答案,但功劳归于 Krasi;

我用过CURL然后用过simplexml_load_string($data);

感谢您所有的帮助

于 2013-05-26T04:44:00.760 回答
1

你可以扔标题

参考文件获取内容

<?php
// Create a stream
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);

// Open the file using the HTTP headers set above
$file = file_get_contents('http://www.example.com/', false, $context);
?>
于 2013-05-25T09:37:52.143 回答