2013-07-09 4 views
1

Я пытаюсь получить название веб-сайта. Этот код отлично работает на моем компьютере, но на сервере он работает неточно. На сервере он не смог получить URL-адрес. На моем компьютере он легко перенаправляется.Почему сервер не смог получить название сайта?

<?php 
ini_set('max_execution_time', 300); 
    $url = "http://www.cricinfo.com/ci/engine/match/companion/597928.html"; 
    if(strpos($url, "companion") !== false) 
    { 
    $url = str_replace("/companion","",$url); 
    } 

$html= file_get_contents($url); 
echo $html; 
//parsing begins here: 
$doc = new DOMDocument(); 
@$doc->loadHTML($html); 
$nodes = $doc->getElementsByTagName('title'); 

//get and display what you need: 
$title = $nodes->item(0)->nodeValue; 

$msg1 = current(explode("|", $title)); 
$msg=rawurlencode($msg1); 
echo $msg; 
if(empty($msg)) 
{ 
    echo "no data to send"; 
} 
else 
{ 
header("Location:fullonsms.php?msg=" .$msg); 
} 
exit(); 
?> 

выход на сервере это http://sendmysms.bugs3.com/cricket/fetch.php

+3

Позволяет ли ваш сервер запрашивать внешние URL-адреса? Параметр, например 'allow_url_fopen', может быть установлен как' false'. –

+3

Ну, тогда начните отладку. Какая часть операции завершается с ошибкой - загрузка файла или разбор HTML? –

+1

принять подавление ошибок с loadHTML, и он, вероятно, скажет вам, что не так – Orangepill

ответ

3

Оказывается, что FOPEN обертки не включены. Как вы можете видеть в разделе notes php docs для file_get_contents, allow_url_fopen должно быть установлено в true, чтобы открыть URL-адрес с файлом_get_contents. Попробуйте запустить на сервере следующее: вы можете использовать file_get_contents с URL-адресом.

echo "urls "; 
echo (ini_get('allow_url_include')) ? "allowed" : "not allowed"; 
echo " in file_get_contents."; 

Если это говорит «URLs не допускается в file_get_contents», то вам необходимо обновить настройки через php.ini, файл .htaccess, Apache конфигурации, или какой-то такой эквивалент. То есть, если вы хотите продолжить использование file_get_contents для доступа к URL-адресу. Другой вариант - использовать завиток, если у вас установлено расширение curl php.

P.S. Я знаю, что это проблема с вызовом file_get_contents, так как вы можете видеть, что его скрипт выдает переменную $ html после его установки. Его ссылка на его сценарий на сервере не выводит ни один html, который говорит мне, что это проблема с захватом html, а не с html-парсером.

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