file_get_contents выдает ошибку

vave

Полезный
Регистрация
22 Июн 2007
Сообщения
467
Реакции
16
Все было хорошо, но вот последнее время, я получаю ошибку:

[25-Mar-2016 08:57:13] PHP Warning: file_get_contents(Для просмотра ссылки Войди или Зарегистрируйся) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden

Код выглядит следующим образом:

PHP:
<?php
$site = file_get_contents('http://www.*****.ru');
echo $site;
?>
 
Пробуй на курле с проксями
 
Доступ запрещён. Часто это из-за того, что file_get_contents не шлёт нормальный юзер агент. Попробй чтото вроде
Код:
$url = "";

$options = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
         
              "User-Agent: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.102011-10-16 20:23:10\r\n" // i.e. An iPad
  )
);

$context = stream_context_create($options);
$file = file_get_contents($url, false, $context);
 
Доступ запрещён. Часто это из-за того, что file_get_contents не шлёт нормальный юзер агент. Попробй чтото вроде
Код:
$url = "";

$options = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
        
              "User-Agent: Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.102011-10-16 20:23:10\r\n" // i.e. An iPad
  )
);

$context = stream_context_create($options);
$file = file_get_contents($url, false, $context);

Ссылку вставил, белый экран...
 
Попробуйте user-agent поменять на 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36'
Код:
<?php

$url = "http://yandex.ru";

$options = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .

              "User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36"
  )
);

$context = stream_context_create($options);
$file = file_get_contents($url, false, $context);
print($file);

?>

Вот так точно работает с яндексом.
 
Попробуйте user-agent поменять на 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36'
Код:
<?php

$url = "http://yandex.ru";

$options = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .

              "User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36"
  )
);

$context = stream_context_create($options);
$file = file_get_contents($url, false, $context);
print($file);

?>

Вот так точно работает с яндексом.
Работает!
А как теперь мне сюда вписать эту строчку?
PHP:
$site= str_replace('#!', 'http://*****.ru#!', $site);
 
$site= str_replace('#!', 'Для просмотра ссылки Войди или Зарегистрируйся!', $site);

В Вашем варианте это будет так:
Код:
<?php

$url = "http://yandex.ru";

$options = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .

              "User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36"
  )
);

$context = stream_context_create($options);
$site = file_get_contents($url, false, $context);

$site = str_replace('#!', 'http://*****.ru#!', $site);

print($site);

?>

Только не понятно для чего делается эта замена '#!' на 'Для просмотра ссылки Войди или Зарегистрируйся!'
 
В Вашем варианте это будет так:
Код:
<?php

$url = "http://yandex.ru";

$options = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .

              "User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36"
  )
);

$context = stream_context_create($options);
$site = file_get_contents($url, false, $context);

$site = str_replace('#!', 'http://*****.ru#!', $site);

print($site);

?>

Только не понятно для чего делается эта замена '#!' на 'Для просмотра ссылки Войди или Зарегистрируйся!'

Опять белый экран и ошибка в логе:

[25-Mar-2016 13:29:57] PHP Warning: file_get_contents(Для просмотра ссылки Войди или Зарегистрируйся) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
in /home1/nodomai1/public_html/svarkan1/index.php on line 28

а замена нужна для ссылок, у меня есть маленький сервис по созданию бесплатных сайтов, и когда я подключаю домен, то в index.php делаю get contents на основной сайт сервиса и заменяю таким образом оригинальные ссылки
 
Покажите окончательный вариант файла или хотя ту часть где осуществляется запрос к сайту.
И еще Вы уверены что это новая запись в логе? Время-то 13.29, 25 марта.
 
Сервер американский, там еще 25 марта)
вот весь код файла

Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Сварка №1</title>
</head>
<base href="http://www.*****.com/-svarka">

<body  style="margin:0px; padding:0px;">
<?php

$url = "http://www.*****.com/-svarka";

$options = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .

              "User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36"
  )
);

$context = stream_context_create($options);
$site = file_get_contents($url, false, $context);

$site = str_replace('#!', 'http://*****.ru#!', $site);

print($site);

?>
</body>

</html>
 
Назад
Сверху