Недавно я обновил свой XAMPP с PHP 5.2 до 5.3.1
Кажется, у меня проблема с файлом_get_contents ().
Я могу использовать эту функцию, чтобы получить что-то вроде « http://www.google.com », но это время, когда я использую его в домене, который у меня установлен локально, например « http: //localhost/my_dir/my_css_file.css », ,
Я не совсем уверен, в чем проблема. Если это ошибка, существует ли жизнеспособная альтернатива?
Добрый совет.
Попробуйте использовать 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
.
Есть ли вероятность, что вы находитесь в системе Windows? Существует ошибка в комбинации Windows, file_get_contents и localhost, которая не будет исправлена. См. Bug 38826 и Ошибка 40881
Попробуйте использовать 127.0.0.1 вместо localhost или настройте любое другое доменное имя. Тогда вы должны заставить его работать.
Решил это с помощью 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_flush
и ob_flush
другом месте моего кода, так что это могло бы испортить мне все.
Я недавно решил эту проблему. На моей машине Windows допустимо иметь пробелы в именах папок. Однако PHP не смог прочитать этот путь.
Я изменил имя папки
Из:
C:\Users\JasonPC\Desktop\Jasons Work\Project
Для того, чтобы:
C:\Users\JasonPC\Desktop\JasonsWork\Project
Затем PHP смог снова прочитать мои файлы.