我最近将XAMPP从PHP 5.2升级到了5.3.1版本。我似乎在使用file_get_contents()函数时遇到了问题。我可以使用该函数获取类似于"http://www.google.com"的内容,但是当我在本地设置的域名上使用它时(例如"http://localhost/my_dir/my_css_file.css"),它会超时。我不太确定问题出在哪里。如果这是一个bug,是否有可行的替代方案?请给予指导。
尽量使用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
中。通过使用 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_start
和ob_flush
,这样会对我造成麻烦。
我最近解决了这个问题。在我的Windows机器上,文件夹名称中包含空格是可以接受的。然而,PHP无法读取这个路径。
我改变了文件夹名称。
原来的名称:
C:\Users\JasonPC\Desktop\Jasons Work\Project
To:
C:\Users\JasonPC\Desktop\JasonsWork\Project
接着PHP就又能读取我的文件了。