4

最近 XAMPP を PHP 5.2 から 5.3.1 にアップグレードしました

file_get_contents() に問題があるようです。

関数を使用して「http://www.google.com 」のようなものを取得できますが、「 http://localhost/my_dir/my_css_file.css」など、ローカルにセットアップしたドメインで使用するとタイムアウトします.

何が問題なのかよくわかりません。バグの場合、実行可能な代替手段はありますか?

親切なアドバイス。

4

4 に答える 4

6

include()の代わりに使用してみてくださいfile_get_contents()

<?php include($_SERVER['HTTP_HOST'] . "/my_dir/my_css_file.css"); ?>

また

<?php include($_SERVER['DOCUMENT_ROOT'] . "/my_dir/my_css_file.css"); ?>

あなたのコメントに対応する更新:

$string = get_include_contents('somefile.php');

function get_include_contents($filename) {
    if (is_file($filename)) {
        ob_start();
        include $filename;
        $contents = ob_get_contents();
        ob_end_clean();
        return $contents;
    }
    return false;
}

これにより、ファイル データが variable に取得されます$string

于 2010-08-11T11:51:22.383 に答える
1

Windows システムを使用している可能性はありますか? Windows、file_get_contents、および localhost の組み合わせにバグがあり、修正されません。バグ 38826およびバグ 40881を参照してください。

localhost の代わりに 127.0.0.1 を使用するか、別のドメイン名を設定してみてください。次に、それを機能させる必要があります。

于 2010-08-11T11:50:11.457 に答える
1

CURL を使用してこれを解決しました。これがコードです。http://yourdomain.com/file.extなどのリモートファイルで動作します

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, ''.$file_path_str.'');
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt ($ch, CURLOPT_USERAGENT, sprintf("Mozilla/%d.0",rand(4,5)));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$curl_response_res = curl_exec ($ch);
curl_close ($ch);

コードの他の場所でob_startandを使用しているため、@James ソリューションを使用できませんでした。ob_flush

于 2010-12-07T20:54:29.897 に答える
0

最近、この問題を解決しました。私の Windows マシンでは、フォルダー名にスペースを含めることができます。しかし、PHP はこのパスを読み取ることができませんでした。

フォルダ名を変更しました

から:

 C:\Users\JasonPC\Desktop\Jasons Work\Project

に:

 C:\Users\JasonPC\Desktop\JasonsWork\Project

その後、PHP は再びファイルを読み取ることができました。

于 2016-11-30T02:08:50.740 に答える