Посмотрите на настройки брандмауэра, они могут быть слишком строгими.Что произойдет, если вы войдете в систему и
telnet localhost 80
или эквивалентный по вашему выбору ОС?И попробуйте то же самое не с localhost, а с полным IP-адресом вашего сервера.Только если это успешно, у вас есть проблема с curl / php.
edit: ok, поэтому подключение к localhost
работает, используя file_get_contents("http://localhost/");
.
Это означаетчто вы можете получить доступ к вашему сайту через localhost, но вам нужно переопределить поле Host:
, отправленное с запросом.Это не совсем обычное использование cURL, но вы можете попробовать:
curl_setopt(CURLOPT_HTTPHEADER,array('Host: yourdomain.com'));
при запросе URL http://127.0.0.1/
.Интересно, будет ли это понимать curl, но вы можете дать ему шанс.
edit ^ 2: Если это не сработает, чтобы обмануть cURL, просто откройте ваше собственное сокетное соединение и сделайтеваш собственный запрос:
$ip = '127.0.0.1';
$fp = fsockopen($ip, 80, $errno, $errstr, 5);
$result = '';
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.exampl.com\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
$result .= fgets($fp, 128);
}
fclose($fp);
}
(это адаптация из примера php.net)