Форум на Kuban.ru (http://forums.kuban.ru/)
-   Веб-дизайн и программирование (http://forums.kuban.ru/f1030/)
-   -   PHP - странное поведение функции file_get_contents... (http://forums.kuban.ru/f1030/php_-_strannoe_povedenie_funkcii_file_get_contents-7030926.html)

2225777 20.07.2015 23:09

PHP - странное поведение функции file_get_contents...
 
Запускаем страницу [url]http://www.landkit.ru/index.php[/url]

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

Warning: file_get_contents([url]http://www.landkit.ru/item.php[/url]) [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 и вручную запускаем в броузере - [url]http://www.landkit.ru/item.php[/url]

Видим ответ!

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

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

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

Dude 21.07.2015 00:54

что в параметрах?

SanekSp 21.07.2015 07:05

Если Вы пытаетесь читать файл, то желательно его в начале Открыть. $fp = fopen(item.php, "r");

fanatnascar 21.07.2015 10:33

2-AlexIT >для этой функции это не нужно
Все таки права, больше нечему.

fanatnascar 21.07.2015 10:34

Хостеру напишите

fanatnascar 21.07.2015 10:38

И еще, заголовок 404 может формировать скрипт подгружаемый, проверяя например наличие нужных headers и понимая, что это не браузер.

SanekSp 21.07.2015 12:27

Ну во первых не понятно для чего вставлять в функцию URL если файл лежит там же.
Достаточно просто указать имя файла
А уж если Вставили то для начала надо бы указать Обработчик протокола.
file_get_contents() - Для этой функции можно использовать URL в качестве имени файла, если была включена опция "fopen wrappers". [url]http://www.php.su/functions/?file-get-contents[/url]
fopen() - Закрепляет именованый ресурс, указанный в аргументе filename, за потоком. Если filename передан в форме "scheme://...", он считается URL'ом и PHP проведёт поиск обработчика протокола. [url]http://www.php.su/functions/?fopen[/url]

2225777 21.07.2015 16:51

Огромное спасибо всем за ответы!

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

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

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

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

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

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

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

Как бы понять, что?...

2225777 21.07.2015 17:12

Функция fopen тоже не может открыть...

fopen([url]http://www.landkit.ru/item.php?block=header[/url]) [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

2225777 21.07.2015 17:26

И права на все файлы 777 и владелец один у всех файлов.

Вешаться? :-)

Искусственный Интеллект1 21.07.2015 18:28

Права доступа тут не причем. Проверьте, будет ли читаться какой-нибудь другой сайт (можно этот форум и эту тему), или лучше несколько разных сайтов.

Искусственный Интеллект1 21.07.2015 18:30

[quote=2225777;39597765]Вешаться? :-) [/quote]
Это слишком простое решение :)

2225777 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 включён

Может, правда, хостеру написать?...

2225777 21.07.2015 19:11

Имеется в виду - url чужих сайтов функция file_get_contents открывает, а своего сайта - нет.

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

Но сам вопрос темы всё же остался загадкой :-)

Искусственный Интеллект1 21.07.2015 21:30

13-2225777 > обратитесь в техподдержку хостинга, возможно пояснят почему так происходит. Может такие настройки хостинга.

fanatnascar 22.07.2015 00:43

На хостинге - доноре что то не отдает, если нет хидеров браузера. Блин, сталкивался же, но не помню нюансов.

2225777 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');

Dude 22.07.2015 23:06

[quote=2225777;39598514] Но сам вопрос темы всё же остался загадкой :-) [/quote]

значит из-за пустого реферера. (mod_rewrite)

fanatnascar 24.07.2015 09:50

16-2225777 >там их набор..


Текущее время: 00:35. Часовой пояс GMT +3.