Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Не могу прочитать данные из удаленного файла (в браузере содержимое файла видно)
Форумы портала PHP.SU » PHP » Программирование на PHP » Не могу прочитать данные из удаленного файла (в браузере содержимое файла видно)

Страниц (1): [1]
 

1. Ratibor Redoran - 04 Ноября, 2009 - 13:46:58 - перейти к сообщению
Hi, All!

Возникла проблема с чтением содержимого файла "http://api.erepublik.com/v1/feeds/citizens/1772208".

Браузер FireFox 3.5.3 прекрасно выводит содержимое.
А вот через PHP ничего не получается.

Пытаюсь это сделать c помощью CURL функций:

<?php
$s_url = "http://api.erepublik.com/v1/feeds/citizens/1772208";
$s_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3";

$ch = curl_init();

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_USERAGENT, $s_agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $s_url);

$s_Source = (curl_exec($ch));

echo "Source = $s_Source<br>";

curl_close($ch);
?>

В ответе: "Source = |" Т.е. пустота.
Скажите пожалуйста, где ошибка?
2. EuGen - 04 Ноября, 2009 - 13:52:21 - перейти к сообщению
Просто содержимое нужно?
Может, легче http://php.su/functions/?file_get_contents
?
3. Ratibor Redoran - 04 Ноября, 2009 - 14:13:57 - перейти к сообщению
EuGen пишет:
Просто содержимое нужно?
Может, легче http://php.su/functions/?file_get_contents
?


Попробовал.

Написал такой скрипт:
<?php
$stream = file_get_contents("http://api.erepublik.com/v1/feeds/citizens/1772208");
print( "Connection successful: $stream");
?>

Получил ответ:

"Warning: file_get_contents(http://api.erepublik.com/v1/feeds/citizens/1772208) [function.file-get-contents]: failed to open stream: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. in Y:\home\localhost\www\php\file_get_contents.php on line 3

Fatal error: Maximum execution time of 30 seconds exceeded in Y:\home\localhost\www\php\file_get_contents.php on line 3"

Может что-то мешает выйти запросу php скрипта за пределы машины?
4. valenok - 04 Ноября, 2009 - 14:17:44 - перейти к сообщению
фаерволл может. А К другим url пробовали запрос отправлять ?
5. Ratibor Redoran - 04 Ноября, 2009 - 15:05:43 - перейти к сообщению
valenok пишет:
фаерволл может. А К другим url пробовали запрос отправлять ?


Ну, вот попробовал к этому сайту:
$stream = file_get_contents('http://bugs.php.net');

тот же результат.

Но ведь фича в том, что браузер FireFox, содержимое файла показывает.
Значит, ИМХО, дело не в файрволе.

А к локальному сайту запрос проходит:
$stream = file_get_contents('http://192.168.10.253/mnlz/index.html');
Выдаёт его содержимое на экран.

Что делать?
6. EuGen - 04 Ноября, 2009 - 15:42:55 - перейти к сообщению
Возможно, дело в каком-либо локальном прокси-сервере.
7. Ratibor Redoran - 04 Ноября, 2009 - 17:07:31 - перейти к сообщению
EuGen пишет:
Возможно, дело в каком-либо локальном прокси-сервере.


Да, так и есть. А подскажите, как его обойти? Т.е. как сформировать запрос, через fsockopen, например, чтобы прокси сервер понял, что нужно передать запрос дальше?
8. EuGen - 04 Ноября, 2009 - 17:13:00 - перейти к сообщению
CURLOPT_PROXY
как опция в curl_setopt, возможно, поможет.

 

Powered by ExBB FM 1.0 RC1