fopen для файла с параметром

Статус
В этой теме нельзя размещать новые ответы.

disa_nsk

Новичок
fopen для файла с параметром

суть проблемы:

есть ссылка http://www.site.ru/file.jsp?id=55555 с разными id, при открытии в браузере выдается содержимое разных xml-файлов в зависимости от id
хотелось бы получить это содержимое в виде текста, для последующей обработки

на это:

<?php
.......
.......
$url = "http://www.site.ru/file.jsp?id=55555";
$handle = fopen($url, "rt");
$contents = stream_get_contents($handle);
fclose($handle);
echo $contents;
?>

выдается сообщение:
Warning: fopen(http://www.site.ru/file.jsp?id=55555): failed to open stream: Bad file descriptor in C:\test.php on line 5
Fatal error: Call to undefined function: stream_get_contents() in C:\test.php on line 6

как быть?
 
FireNet
PHP Version 4.3.11

а режим не знаю какой, из примеров взял, вроде как для получения не в бинарном виде, а в виде текста
это не главное, "r" - тоже не помогает
 
1. Что за пару "rt" Вы указываете в качестве в качестве режима открытия файла?

2. Вам выдается предупреждение о том, дискриптор не создался, потому что так как Вы хотели файл не открылся.

3. Судя по всему в вашей версии PHP функция stream_get_contents не определена, какая у Вас версия? Что написано в мануале по поводу http://ru.php.net/stream_get_contents и не проще ли в вашем случае посмотреть на аналогичную ей функцию (указана в мануале, поэтому название не пишу)?
 
Во-первых, "файлов с параметрами" не бывает. Научитесь отличать урл от файла.
Во-вторых, а что - без параметра работает нормально? Научитесь сначала локализовывать проблему, а потом уже развивать в себе талант беллетриста.
 
FireNet, Gorynych, цитата из мануала [m]fopen[/m]:

... Windows offers a text-mode translation flag ('t') which will transparently translate \n to \r\n when working with the file. In contrast, you can also use 'b' to force binary mode, which will not translate your data. To use these flags, specify either 'b' or 't' as the last character of the mode parameter. ...
 
на сём давайте тему про режимы чтения закроем.

disa_nsk
пользовался ли ты гуглем перед тем, как задать своё вопрос на форуме?
 
akd
да я-то понимаю, но мне хотелось, чтобы человек подумал, как именно он пытается открыть сетевой ресурс
 
Фанат
Ну извините, я я даже не новичок, только пробую, без параметра выдается xml-файл с таким содержимым:
<?xml version="1.0" encoding="UTF-8" ?>
<xml />

то есть без нужного содержимого

а о будущем белетриста даже и не мечтал
 
disa_nsk
очень хорошо.
вот и начни пробовать. с гугля.
если у тебя возникают какие-то проблемы, то первым делом идёшь в гугль и ищешь похожие.
в твоём случае, в гугль надо писать сообщение об ошибке, без имен файлов, конечно.
 
а если так?

PHP:
$contents = '';  
$url = "http://www.site.ru/file.jsp?id=55555";
$handle = fopen($url, "r");
while(!feof($handle)) {   
  $contents. = trim(fgets($handle))."\r\n";
} 
fclose($handle);

забыл trim() :)
 
почти offtopic 2 tony2001

вот давно хочу понять одну вещь: возможность открывать файлы по сетевым протоколам через fopen() это все таки благо или зло? Может все же правильнее использовать соответсвующее API?
 
Используй CURL и сокеты. Походу дела линк битый, и по этому fopen
пытался его открыть, пока не наступил timeout
 
Попробуй глазами увидеть в дереве каталогов файл под именем "http://www.site.ru/file.jsp?id=55555"
 
Slavicos
доступа туда нет, да и как я подозреваю там есть только файл file.jsp который генерит xml-файл в зависимости от id
 
тема закрыта, поскольку правильный ответ уже дан, но при этом набежали профессора кислых щей со своими гениальными советами.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху