Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> fopen и открытие http 
:(
    Опции темы
subhuti
Дата 24.7.2009, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.9.2008

Репутация: нет
Всего: нет



Есть 2 сервера
1-й (slackware)
Код

# php -v
PHP 5.2.10 (cli) (built: Jul 11 2009 18:13:25)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies


2-й debian
Код

$ php -v
PHP 5.2.0-8+etch15 (cli) (built: May  1 2009 10:25:25)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2006 Zend Technologies



есть скрипт

Код

<?php
if($fh=fopen('http://ya.ru/logo.png','r')){
        echo "opened\n";
        echo "------\n";
        var_dump($http_response_header);
        $new = fopen('logo.png','w+');
        while(!feof($fh)){
                $line = fgets($fh);
                fwrite($new,$line);
        }
}
else
{
        echo "can't open\n";
        var_dump($http_response_header);
}

?>



запускаем его на slackware   и получаем:
Код

$ php php.php
opened
------
PHP Notice:  Undefined variable: http_response_header in /tmp/php.php on line 5
NULL




файл logo.png при этом создан и в него записан логотип яндекса.

запускаем этот же скрипт на debian  и получаем следующее

Код

$ php php.php
opened
------
array(8) {
  [0]=>
  string(15) "HTTP/1.1 200 OK"
  [1]=>
  string(20) "Server: nginx/0.7.59"
  [2]=>
  string(35) "Date: Fri, 24 Jul 2009 12:43:06 GMT"
  [3]=>
  string(23) "Content-Type: image/png"
  [4]=>
  string(20) "Content-Length: 1418"
  [5]=>
  string(44) "Last-Modified: Thu, 21 May 2009 09:37:21 GMT"
  [6]=>
  string(17) "Connection: close"
  [7]=>
  string(20) "Accept-Ranges: bytes"
}






Далее
меняем ссылку для скачивания на не существующую

в debian мы получаем второй вариант развития событий т.е.
Код

Warning: fopen(http://ya.ru/logo.pg): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
 in /tmp/php.php on line 2
can't open
array(6) {
  [0]=>
  string(22) "HTTP/1.1 404 Not Found"
  [1]=>
  string(20) "Server: nginx/0.6.35"
  [2]=>
  string(35) "Date: Fri, 24 Jul 2009 12:44:23 GMT"
  [3]=>
  string(23) "Content-Type: text/html"
  [4]=>
  string(20) "Content-Length: 3235"
  [5]=>
  string(17) "Connection: close"
}




в slackware fopen возвращает TRUE:

Код

$ php php.php
opened
------
PHP Notice:  Undefined variable: http_response_header in /home/alexey/php.php on line 5
NULL


и в файл logo.png записвается страница 404 яндекса



Важно:
если на slackware в качестве урл прописать что-то с localhost то массив $http_response_headers заполняется, но даже если в нём есть 404, то всё равно выполняется первое условие и в файл записывается 404-я страница веб серера

 Помогите в этом разобраться
PM MAIL   Вверх
nerezus
Дата 26.7.2009, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 2
Всего: 43



Цитата

PHP Notice:  Undefined variable: http_response_header in /home/alexey/php.php on line 5
 Переведи и прочти.

Цитата

 Помогите в этом разобраться
 В чем?
Если ты хотел задать вопрос, то задай.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
subhuti
Дата 26.7.2009, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.9.2008

Репутация: нет
Всего: нет



Почему такое разное поведение
почему в slackware не заполняется этот массив?
почему fopen в slackware не возвращает FALSE в случае 404?


PS
Цитата


PHP Notice:  Undefined variable: http_response_header in /home/alexey/php.php on line 5
 Переведи и прочти.


вопрос не стоял о том , что это за ошибка smile
вопрос был в том почему на заполнился этот массив

Это сообщение отредактировал(а) subhuti - 26.7.2009, 23:42
PM MAIL   Вверх
nerezus
Дата 27.7.2009, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 2
Всего: 43



Код

<?php copy('http://ya.ru/logo.pg', 'logo.pg'); ?>



--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
subhuti
Дата 27.7.2009, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.9.2008

Репутация: нет
Всего: нет



я тоже знаю несколько способов, которыми можно обойти эту проблему smile
и можно даже забить на неё,  но всё же интересно почему так оно себя ведёт 
PM MAIL   Вверх
nerezus
Дата 27.7.2009, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 2
Всего: 43



Цитата

почему в slackware не заполняется этот массив?
 И не должен. Где он объявляется? В коде его нету. А где в него добавляются значения?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
subhuti
Дата 27.7.2009, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.9.2008

Репутация: нет
Всего: нет



Цитата

 Где он объявляется? В коде его нету. А где в него добавляются значения?



When using the HTTP wrapper, $http_response_header will be populated with the HTTP response headers. 





PM MAIL   Вверх
nerezus
Дата 27.7.2009, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 2
Всего: 43



Пардон, я прогнал. Век живи - век учись )
По поводу заполнения - обнови PHP, в debian'е просто музейная версия.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
subhuti
Дата 27.7.2009, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.9.2008

Репутация: нет
Всего: нет



>По поводу заполнения - обнови PHP, в debian'е просто музейная версия. 
зато "глобальная и надежная" smile

т.е.  произошли какие-то изменения в ф-ции fopen  и ещё желательно вообще не использовать в работе с http?

Добавлено через 2 минуты и 59 секунд
наверное это
Цитата

Version 5.2.10
Added "ignore_errors" option to http fopen wrapper. (David Zulke, Sara)

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0484 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.