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;
}

这会将文件数据放入变量$string中。

于 2010-08-11T11:51:22.383 回答
1

你有机会在Windows系统上吗?Windows、file_get_contents 和 localhost 的组合中存在一个无法修复的错误。请参阅错误38826和错误 40881

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

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

我无法使用 @James 解决方案,因为我在代码中的其他地方使用ob_startob_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 回答