PHP не читает RSS-файл в режиме реального времени, но хорошо читает при локальном - PullRequest
0 голосов
/ 06 января 2011

Мой локальный сервер отлично читает RSS, но когда я загружаю его, я получаю эту ошибку:

Warning: fopen(http://webservice.weatherzone.com.au/rss/wx.php?u=13145&lt=aploc&lc=6439&fc=1) [function.fopen]: failed to open stream: HTTP request failed! in /var/www/vhosts/---------------------- on line 105
Error reading RSS data.

Я не могу опубликовать URL на сайте, потому что я все еще работаю над ним, и это проблема безопасности. И я не могу изменить файл php.ini ...

Это код, где он называется:

$xml_parser = xml_parser_create();    
$rss_parser = new RSSParser();    
xml_set_object($xml_parser,&$rss_parser);    
xml_set_element_handler($xml_parser, "startElement", "endElement");    
xml_set_character_data_handler($xml_parser, "characterData");    
**$fp = fopen("http://webservice.weatherzone.com.au/rss/wx.php?u=13145&lt=aploc&lc=6439&fc=1","r")    
   or die("Error reading RSS data.");**    
while ($data = fread($fp, 4096))    
   xml_parse($xml_parser, $data, feof($fp))    
       or die(sprintf("XML error: %s at line %d",    
           xml_error_string(xml_get_error_code($xml_parser)),    
           xml_get_current_line_number($xml_parser)));    
fclose($fp);    
xml_parser_free($xml_parser);

Ответы [ 3 ]

2 голосов
/ 06 января 2011

Возможно allow_url_fopen отключено. Пожалуйста, проверьте, используя ini_get() или phpinfo().

0 голосов
/ 06 января 2011

Не используйте fopen () для чтения файлов из Интернета.

Попробуйте вместо этого использовать cURL:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$content = curl_exec($ch); // xml-code in $content
curl_close($ch);

http://www.php.net/manual/en/book.curl.php

0 голосов
/ 06 января 2011

Первое, о чем я бы подумал - у вас включен allow_url_fopen в вашем файле PHP.ini?Если нет, вам нужно включить это, чтобы использовать URL с функцией fopen ().

Даже если он установлен правильно, вы можете использовать функции curl, чтобы сделать его менее зависимымНастройки ini.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...