Intereting Posts
Доступ к свойствам XML, которые имеют двоеточие в имени с помощью PHP Сортировка элементов массива в PHP, чтобы он не учитывал регистр букв PHP is_file и корневые относительные пути сервера Как я могу установить видеочат на своем сайте, например Gmail? Проблема маршрутизации, вызывающая ошибку Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException Различные теги div, использующие регулярное выражение в php Лучший способ дезинформировать контент с помощью PHP? Несколько почтовых вложений в PHP как подсчитать количество пикселей в изображении (php) php: Есть ли большие причины, чтобы процитировать все ключи / индексы массивов? Примеры SQL-инъекций с помощью addlashes ()? Выделите все элементы в таблице и отобразите их в порядке, в зависимости от их идентификатора родителя Как заставить APC (PHP Cache) работать? Сортировка массива по значению в алфавитном порядке php Включение $ _GET в codeigniter

file_get_contents не работает для локальных файлов

Недавно я обновил свой 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 смог снова прочитать мои файлы.