2016-03-10 2 views
0

У меня есть этот код для загрузки внешних страниц на моем сайте:завиток страницы не работает

<?php 
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://rooster.csvincentvangogh.nl:8081'; 
    $contents = curl($url); 
    echo $contents; 
?> 

Это работает для большинства сайтов, но не тот, мне нужно: http://rooster.csvincentvangogh.nl:8081. Это из-за: 8081? Он должен быть там, хотя, в противном случае сайт не работает ... Как я могу это исправить? Есть ли альтернативный способ, вместо скручивания?

Я проверил его на http://portquiz.net. Порты, такие как 80 и 8080, работают, но, например, 8888 и 8081 нет. http://rooster.csvincentvangogh.nl:8080 также работает, но у него разные каталоги, а не страницы, которые мне нужны. Мне действительно нужны страницы: 8081 ...

Заранее спасибо!

+0

Там нет ошибки или что-то, просто Пустой экран. Сама страница, конечно же, работает. – robinvdnoord

+0

Вы также можете использовать telnet и GET/ – thepiercingarrow

+0

Как @MarkWright? – robinvdnoord

ответ

0

я думаю, его из-за его обнаружения ошибки 404 и, таким образом, хочет вернуть «ошибку» (BOOL (ложь)?), Чтобы предупредить вас, так что она отбрасывает тело и игнорирует CURLOPT_RETURNTRANSFERS. во всяком случае, используйте это.

function curl($url,&$body){ 
      $ch = curl_init(); 
      $tmpfile=tmpfile(); 
      curl_setopt($ch, CURLOPT_URL, $url); 
      curl_setopt($ch,CURLOPT_FILE,$tmpfile); 
      curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); 
      $ret = curl_exec($ch); 
      $body=file_get_contents (stream_get_meta_data ($tmpfile) ['uri']); 
      curl_close($ch); 
      fclose($tmpfile); 
      return $ret; 
    } 

также рассмотреть CURLOPT_STDERR с CURLOPT_VERBOSE, чтобы получить подробную информацию о том, что думает локон ^^ (часто очень полезная информация об отладке, когда «она не работает»)

+0

Итак, когда я вызываю функцию, я просто делаю завиток ($ url)? Когда я это делаю, все, что я получаю, остается пустым экраном. И нет, это не из-за ошибки 404, потому что на таких сайтах, как portquiz.net:8081, это тоже не работает ... – robinvdnoord

+0

@robinvdnoord no, вы называете это следующим образом: '$ body = ''; $ ret = curl ('http://rooster.csvincentvangogh.nl:8081',$body); var_dump ($ ret, $ body);' также я фиксировал 2x синтаксические ошибки, извините, попробуйте новый код – hanshenrik

+0

Спасибо, но он по-прежнему только дает белый экран .. Я думаю, что мой сервер или облачный флаг блокирует его или что-то в этом роде. UPDATE это отображало это: 'bool (false) string (0) "" ' – robinvdnoord

0

вы можете попробовать установить порт:

curl_setopt($ch, CURLOPT_PORT , 8081); 

Таким образом, вы можете удалить: 8081 с вашего URL.
Примечание: убедитесь, что у вас есть завиток модуль установлен

+0

function_exists ('curl_version'); возвращает 1, поэтому я думаю, что он установлен. Я добавил код, но до сих пор ничего не отображается ... – robinvdnoord

+0

Когда я пытаюсь, например. http://portquiz.net без CURLOPT_PORT это работает, но когда я добавляю CURLOPT_PORT 8081, он больше не работает ... Порты 80 и 8080 на портвизе работают, хотя ... – robinvdnoord

+0

для HTTP/HTTPS (и, возможно, других) завиток достаточно умен, чтобы установить CURLOPT_PORT в соответствии с: X автоматически, так что это не так. вероятно, потому, что локоть обнаруживает 404 как ошибку. – hanshenrik