Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ошибка Bad file descriptor при использовании функции fopen.
 
 автор: sLim80   (19.06.2006 в 14:37)   письмо автору
 
 

Пытаюсь разобраться с примером "Загрузка курса валют с сайта ЦентроБанка", который находится по адресу:
http://www.softtime.ru/scripts/valute.php

Ошибка возникает при попытке открыть интернетовскую страничку.
Код:


    $link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date"; 
    $fd = fopen($link,"r"); 


Ошибка:
Warning: fopen(http://www.cbr.ru/scripts/XML_daily.asp?date_req=19/06/2006): failed to open stream: Bad file descriptor in c:\appserv\www\site\index2.php on line 49

Проверил в php.ini:
allow_url_fopen = On

Подскажите, пожалуйста, в чём загвоздка?

PS WinXP SP2+Apache 1.3.33+PHP 4.3.10 (AppServ 2.4.3)\
PPS пробовал напрямую вставить URL в IE. На экране появляются нужные данные.

   
 
 автор: XPraptor   (19.06.2006 в 14:47)   письмо автору
 
   для: sLim80   (19.06.2006 в 14:37)
 

Только что проверил твой код:

$link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date"; 
$fd = fopen($link, "r");
if(!$fd){
    $retstr="Not Open Link!<BR>\r\n";
}else{
    while(!feof($fd))$retstr.=fgets($fd, 1024);
    fclose($fd);
}


Все работает. Смотри настройки хоста.

   
 
 автор: sLim80   (19.06.2006 в 15:12)   письмо автору
 
   для: sLim80   (19.06.2006 в 14:37)
 

А не может это быть связано с работой через прокси сервер?
Может нужно предварительно прокси сконфигурировать?

   
 
 автор: XPraptor   (19.06.2006 в 15:14)   письмо автору
 
   для: sLim80   (19.06.2006 в 15:12)
 

Если прокси стоит, то конечно надо через сокеты открывать с указанием прокси.
Тут недавно тема про прокси и сокеты детально расписана была, поиск задай по слову: proxy-autorization

   
 
 автор: Хулиган   (15.07.2006 в 04:14)   письмо автору
 
   для: sLim80   (19.06.2006 в 14:37)
 

У меня похожая проблема, только никакого прокси у меня нет.
На fopen вылетает апач. Что посоветуете? allow_url_fopen тоже установлен в On. Локальный сервер. Денвер.

P.S.
Если открывать какой-нибудь текстовый файл на винте, то всё прекрасно открывается и читается.

   
 
 автор: cheops   (15.07.2006 в 10:58)   письмо автору
 
   для: Хулиган   (15.07.2006 в 04:14)
 

А firewall не может закрывать доступ для Apache в интернет?

   
 
 автор: Хулиган   (15.07.2006 в 12:29)   письмо автору
 
   для: cheops   (15.07.2006 в 10:58)
 

думаю, что нет. У файрвола (BlackIce) настройки весьма либеральные. Пробовал также и с отключеным файрволом. Результат тот же.

Пробовал ещё варианты с открытием через $fd = fsockopen ($link, 80, $errno, $errstr, 30);
Результат:
Warning: fsockopen(): php_network_getaddresses: gethostbyname failed in z:\home\mysite.ru\www\main.inc on line 34

Warning: fsockopen(): unable to connect to http://www.cbr.ru/scripts/XML_daily.asp?date_req=15/07/2006:80 in z:\home\mysite.ru\www\main.inc on line 34

Пробовал запускать скрипт не на локальном а на удалённом сервере jino-net.ru (думал, может у меня с настройками что-то) но опять никакого результата.

Даже просто скопировать copy ( $link, 'aaa.txt'); не удается.

Поэтому закономерный вопрос: тот скрипт в примерах в принципе работоспособен? Его проверяли? И предназначена ли fopen для открытия удалённых файлов?

   
 
 автор: cheops   (15.07.2006 в 13:51)   письмо автору
 
   для: Хулиган   (15.07.2006 в 12:29)
 

Сокету в качестве перевого аргумента нужно передавать только адрес сайта, т.е в $link должна быть только строка "www.cbr.ru", параметры и путь указываются уже в GET-запросе.

   
 
 автор: Хулиган   (15.07.2006 в 16:23)   письмо автору
 
   для: cheops   (15.07.2006 в 13:51)
 

Передаю www.cbr.ru - страница замерзает на минуту, а потом сообщение, что страница недоступна :(
Сделал иначе: обычное win32 приложение с URLDownLoadToFile раз в день скачивает страницу с банковского сайта, парсит и пишет в текстовый файл, затем файл по ftp загоняет на сервер. А index.php просто читает этот файл valuta.txt. Проще, надёжней, и быстрее.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования