PHP - 无法访问外部URL

时间:2013-05-25 09:31:04

标签: php url file-get-contents

由于流量很大,我最近升级了我网站的服务器。在新的服务器上,PHP的某些方面似乎被打破了。我有一个非常具体的代码无法正常工作。但是,由于版权原因,我只能向您展示与您无关的机密信息:

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

此代码在升级之前完全无法正常 ,现在这里或那里的一些奇怪设置阻止了此代码的工作。

具体而言,file_get_contents函数根本不起作用,无论您放入什么外部网址(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 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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。

答案 2 :(得分:1)

你可以扔进标题

参考file-get-contents

<?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);
?>

答案 3 :(得分:1)

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

我使用了CURL,然后使用了simplexml_load_string($data);

感谢您的所有帮助