2013-07-09 84 views
1

我想要獲取網站的標題。此代碼在我的電腦上完美工作,但在服務器上運行不順暢。在服務器上它無法獲取網址內容。在我的電腦上,它很容易重定向。爲什麼服務器無法獲取網站的標題?

<?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封裝未啓用。正如您在file_get_contents的php文檔的notes部分所見,必須將allow_url_fopen設置爲true才能使用file_get_contents打開url。嘗試在服務器上運行以下內容以查看是否可以通過url使用file_get_contents。

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

如果說「網址的file_get_contents不準」,那麼你就需要通過在php.ini,.htaccess文件,Apache的配置,或一些這樣相當於更新設置。也就是說,如果你想繼續使用file_get_contents來訪問url。另一個選擇是如果你已經安裝了php curl擴展,就使用curl。

P.S.我知道這是調用file_get_contents時的一個問題,因爲您可以在設置它後看到他的腳本回顯了$ html變量。他在服務器上的腳本鏈接不會輸出任何html,這告訴我這是抓取html而不是html解析器的問題。

相關問題