3

トラフィック量が多いため、最近、Web サイトのサーバーをアップグレードしました。新しいサーバーでは、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 に答える