К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

PHP - странное поведение функции file_get_contents...

0 - 20.07.2015 - 23:09
Запускаем страницу http://www.landkit.ru/index.php

получаем сообщение:

Warning: file_get_contents(http://www.landkit.ru/item.php) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/landkit/domains/landkit.ru/public_html/index.php on line 63

когда файл item.php - существует!

В доказательство копируем адрес из функции file_get_contents и вручную запускаем в броузере - http://www.landkit.ru/item.php

Видим ответ!

Как такое может быть?

Права? Уже все права на файлы делали и 777, потом все 755...

Есть какие-нибудь соображения???



Гость
1 - 21.07.2015 - 00:54
что в параметрах?
Гость
2 - 21.07.2015 - 07:05
Если Вы пытаетесь читать файл, то желательно его в начале Открыть. $fp = fopen(item.php, "r");
Гость
3 - 21.07.2015 - 10:33
2-AlexIT >для этой функции это не нужно
Все таки права, больше нечему.
Гость
4 - 21.07.2015 - 10:34
Хостеру напишите
Гость
5 - 21.07.2015 - 10:38
И еще, заголовок 404 может формировать скрипт подгружаемый, проверяя например наличие нужных headers и понимая, что это не браузер.
Гость
6 - 21.07.2015 - 12:27
Ну во первых не понятно для чего вставлять в функцию URL если файл лежит там же.
Достаточно просто указать имя файла
А уж если Вставили то для начала надо бы указать Обработчик протокола.
file_get_contents() - Для этой функции можно использовать URL в качестве имени файла, если была включена опция "fopen wrappers". http://www.php.su/functions/?file-get-contents
fopen() - Закрепляет именованый ресурс, указанный в аргументе filename, за потоком. Если filename передан в форме "scheme://...", он считается URL'ом и PHP проведёт поиск обработчика протокола. http://www.php.su/functions/?fopen
7 - 21.07.2015 - 16:51
Огромное спасибо всем за ответы!

Прямо бальзам на душу! :-) (Борюсь с этим уже несколько дней...)

> Ну во первых не понятно для чего вставлять в функцию URL если файл лежит там же.

Просто здесь упрощённый пример, а на самом деле нужно, чтобы функция file_get_contents возвращала отработанный результат отработки вызываемого php-скрипта - а внего надо передать ещё и параметр :-)

file_get_contents(http://landkit.ru/item.php?block=header)

В .htaccess прописано: php_flag allow_url_fopen on
и phpinfo() пишет, что этот флаг включён.

Но самое что ещё больше непонятно, что на другом хостинге эта строка работает прекрасно!!!

Что-то правда или с правами или с настройками...

Как бы понять, что?...
8 - 21.07.2015 - 17:12
Функция fopen тоже не может открыть...

fopen(http://www.landkit.ru/item.php?block=header) [function.fopen]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/landkit/domains/landkit.ru/public_html/index.php on line 62
9 - 21.07.2015 - 17:26
И права на все файлы 777 и владелец один у всех файлов.

Вешаться? :-)
10 - 21.07.2015 - 18:28
Права доступа тут не причем. Проверьте, будет ли читаться какой-нибудь другой сайт (можно этот форум и эту тему), или лучше несколько разных сайтов.
11 - 21.07.2015 - 18:30
Цитата:
Сообщение от 2225777 Посмотреть сообщение
Вешаться? :-)
Это слишком простое решение :)
12 - 21.07.2015 - 19:06
2 Искусственный Интеллект1:
Cпасибочки за участие и новое направление мысли! :-)

file_get_contents("http://forums.kuban.ru/showthread.php?p=39597765");

и

file_get_contents("http://miniature-land.com/index.php?popup=no&shopping_cart=yes");

открыли нам соответствующие сайты!

Ага. Значит, всё же дело в настройках либо хостинга, либо php - кто-то запрещает вызывать url в file_get_contents, хотя allow_url_fopen включён

Может, правда, хостеру написать?...
13 - 21.07.2015 - 19:11
Имеется в виду - url чужих сайтов функция file_get_contents открывает, а своего сайта - нет.

Решение найдено немного другое: функция file_get_contents заменена на include нужного скрипта, переделанного в функцию.

Но сам вопрос темы всё же остался загадкой :-)
14 - 21.07.2015 - 21:30
13-2225777 > обратитесь в техподдержку хостинга, возможно пояснят почему так происходит. Может такие настройки хостинга.
Гость
15 - 22.07.2015 - 00:43
На хостинге - доноре что то не отдает, если нет хидеров браузера. Блин, сталкивался же, но не помню нюансов.
16 - 22.07.2015 - 17:34
2 Фанат NASCAR:

Имеется в виду такой хидер?
header('User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:34.0) Gecko/20100101 Firefox/34.0');
Гость
17 - 22.07.2015 - 23:06
Цитата:
Сообщение от 2225777 Посмотреть сообщение
Но сам вопрос темы всё же остался загадкой :-)
значит из-за пустого реферера. (mod_rewrite)
Гость
18 - 24.07.2015 - 09:50
16-2225777 >там их набор..


К списку вопросов






Copyright ©, Все права защищены