phpinfo curl'ом через прокси — почему глюк?

интернет программирование php proxy curl

Вот такой простой файл:
<?php
phpinfo(INFO_VARIABLES);
?>

Забираю с локального компа curl'ом через прокси — получаю пустую страницу, только http-заголовок 200.
Вот код, чем забираю:
<?php
$begin = curl_init();
curl_setopt($begin, CURLOPT_URL, "http://omegastroj.ru/phpinfo.php");
curl_setopt($begin, CURLOPT_PROXY, '127.0.0.2:1444');
curl_setopt($begin, CURLOPT_HEADER, 1);
curl_setopt($begin, CURLOPT_USERAGENT, "Mozilla/4.0 (Compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($begin, CURLOPT_REFERER, "http://otvety.google.ru/otvety/");
curl_exec($begin);
curl_close($begin);
?>

При этом если вместо phpinfo(INFO_VARIABLES); написать print_r($_SERVER);, то всё нормально. Если закомментировать строку с CURLOPT_PROXY, то тоже всё нормально.
Что за странная несовместимость?

Примечание:
добавляю строчку: curl_setopt($begin, CURLOPT_TIMEOUT, 300);
То есть, curl не должен закрыться, это пять минут. Прокси тоже соединение не закрывает.
В порядке эксперимента до и после curl_exec ставлю echo "test" — всё выводится.

Примечание:
> nyaka
> print_r($_SERVER);
> phpinfo(INFO_VARIABLES);

да, так тоже исправно приходит $_SERVER, причём как если его перед phpinfo() поставить, так и если после.

Примечание:
> Может он считает себя роботом…
ну это вряд ли.
а не проходит только часть html, причём иногда обрывается на полуслове. Это если phpinfo() без параметров. Если с параметром INFO_VARIABLES, то либо не проходит таблица (при этом </body> закрывается), либо совсем ничего, кроме заголовка http 200.

Примечание:
Powerhead, вывод в переменную происходит если установить CURLOPT_RETURNTRANSFER в единицу, по умолчанию же в stdout. От перенаправления вывода в переменную или в файл картина не меняется нисколько.
Тот же url браузером через прокси открывается отлично.
Ответы:
Действительно странно, может phpinfo относительно долго выполняется, и прокси закрывает соединение? А что будет если сначало просто что нибудь выкинуть в поток?
Имелось ввиду выкинуть в поток перед phpinfo.
Только $_SERVER? То есть кусок html с phpinfo() не приходит? Хм. А попробуйте статикой положить.
Может у вас прокси какие то дополнительные функции выполняет? Может он считает себя роботом и обрабатывает тег <meta name="ROBOTS" content="NOINDEX,NOFOLLOW,NOARCHIVE" /> :))
Эм, поиграем ещё в угадай-ка) Вообще ситуация сложная, тут надо степ-бай-степ прогнать.
Ещё наобум попробуйте включить буферизацию вывода и явно указать Content-Length
ob_start();
...
header("Content-Length: ".ob_get_length());
ob_end_flush();
Так а где вывод результата запроса в вашем скрипте, я не пойму?
Если
curl_exec($begin);
заменить на
$result = curl_exec($begin);
var_dump($result);
Тогда мистика какая-то. Я бы попробовал поставить сниффер и посмотреть, что же на самом деле отсылается и что возвращается. Может какой-то дивный баг php - ответ он получает, но по какой-то причине именно этот блок проглатывает.


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.