file_get_contents不适用于本地文件

时间:2010-08-11 11:19:02

标签: php file-get-contents

我最近将我的XAMPP从PHP 5.2升级到5.3.1

我似乎遇到了file_get_contents()的问题。

我可以使用该功能获取“http://www.google.com”之类的内容,但是当我在本地设置的域中使用它时会超时,例如“http://localhost/my_dir/my_css_file.css”。

我不确定问题是什么。如果这是一个错误,是否有可行的替代方案?

请告知。

4 个答案:

答案 0 :(得分: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;
}

这会将文件数据转换为变量$string

答案 1 :(得分:1)

您是否有机会使用Windows系统? Windows,file_get_contents和localhost的组合中存在一个错误,无法修复。请参阅Bug 38826Bug 40881

尝试使用127.0.0.1而不是localhost或设置任何不同的域名。然后你应该让它运作。

答案 2 :(得分: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);

我无法使用@James解决方案,因为我在我的代码中的其他地方使用了ob_startob_flush,所以这会让我感到困惑。

答案 3 :(得分:0)

我最近解决了这个问题。在我的Windows机器上,可以在文件夹名称中包含空格。但PHP无法读取此路径。

我更改了文件夹名称

自:

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

要:

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

然后PHP能够再次读取我的文件。