2015-04-07 2 views
0

Мой код:file_get_contents работает на каждом сайте, за исключением шахты

<?php 
    $url = "http://www.myurl.com/"; 
    /*$opts = array(
     'http'=>array(
      'method'=>"GET", 
      'header'=>"User-Agent: ".$_SERVER['HTTP_USER_AGENT'] 
     ) 
    ); 
    $context = stream_context_create($opts);*/ 
    $content = file_get_contents($url); 
    echo $content; 
?> 

Я получаю следующее сообщение об ошибке:

Warning: file_get_contents(http://www.myurl.com/) [function.file-get-contents]: failed to open stream: Connection timed out in /home/content/myurl/contents.php on line 10 

код не будет работать для меня, когда я либо создавать или не создавая поток. Интересно, что он будет работать на любом другом сайте, который я пробовал, кроме моего собственного.

PS: Не имеет значения, выполняю ли я это с или без «http» или «www».

PsPs: allow_url_fopen включен

PSPSPS: Я поставил следующие в .htaccess:

<filesMatch "\\.(html|htm|php)$"> 
    Header set Cache-Control "max-age=1, private, must-revalidate" 
    </filesMatch> 

Может ли это быть проблема?

+0

У вас есть графический интерфейс, и если вы пытались посетить URL-адрес в веб-браузере? Если у вас есть доступ к CLI и у Wget вы можете попробовать выполнить тот же запрос с Wget и сообщить мне результат. –

+0

Тайм-аут соединения часто означает запросы на удаление брандмауэра. Что такое серверная операционная система, и можете ли вы «telnet» на порт 80 на этом компьютере с внешнего устройства? –

+0

попробуйте здесь, добавив агента в заголовок http://stackoverflow.com/questions/10524748/why-im-getting-500-error-when-using-file-get-contents-but-works-in -a-browser? rq = 1 – albanx

ответ

0

Вы пробовали использовать завиток?

function curl($url){ 
       $ch = curl_init(); 
       curl_setopt($ch, CURLOPT_URL, $url); 
       curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
       curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); 
       $data = curl_exec($ch); 
       curl_close($ch); 
       return $data; 
     } 


     $url = 'http://www.myurl.com/'; 
     $contents = curl($url); 
+0

Да. Пытался использовать cUrl тоже. Ваш код может загружать многие сайты, но в моем случае он просто пуст. (даже с print_r) – shamrock

0

Постарайтесь установить максимальное время выполнения на более длительный период, возможно, оно было установлено ниже. ini_set ('max_execution_time', 60); // 1 минута

+0

Я уже установил его на 360. – shamrock

0

Ваш сервер должен иметь брандмауэр, который запрещает вам подключаться к внешнему ресурсу. Поэтому проверьте свой брандмауэр.

0

Он должен работать на общем хосте, но если это ваш собственный сервер, это может быть проблема сети или DNS на сервере/локальной сети, которая мешает серверу разрешать «www.myurl.com» на свой собственный адрес , Если вы не используете виртуальные хосты (на apache) или эквивалентный механизм, он будет работать, используя 'http://localhost/' вместо

Смежные вопросы