由于流量很大,我最近升级了我网站的服务器。在新的服务器上,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')
...
答案 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)
你可以扔进标题
<?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);
感谢您的所有帮助