2014-01-25 240 views
1

我捲曲的代碼給我一個空白頁捲曲顯示空白頁

<? 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($ch, CURLOPT_URL,"http://mysite/scripts/showsomething.php"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
$result=curl_exec ($ch); 
curl_close ($ch); 
$core = explode('<!--- BEGIN -->', $result); 
$main = explode('<!--- END -->', $core[1]); 
echo $main[0]; 
?> 

此代碼工作正常在本地主機上,而不是在服務器...

+0

您是否管理其他服務器?如果沒有,是否有可能你的IP被遠程服務器阻塞了? –

+0

我不知道你的服務器是否支持php短標籤<? 。請檢查其他嘗試使用<?php – Lab

回答

0

工作代碼...

 $ch = curl_init(); 
     $timeout = 10; 
     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
     $data = curl_exec($ch); 
     curl_close($ch); 
     var_dump($data); 

希望它有幫助...

+0

我得到bool(false) – user3175158

+0

我使用 echo curl_getinfo($ ch)。 '
'; echo curl_errno($ ch)。 '
'; echo curl_error($ ch)。 '
'; 並得到 陣列無法連接到主機 – user3175158

+0

@ user3175158您是否使用任何有效的URL來代替$ url? –

0

一路打開錯誤報告到11.

error_reporting(E_ALL); 

這會告訴你更多關於你面臨的問題。在開發環境中使用curl並移動到服務器時最常見的罪魁禍首是缺少捲髮包。

您可以檢查,看看是否你已經卷曲做安裝以下軟件:

if(!function_exists('curl_version')) { 
    throw new Exception('Curl package missing'); 
} 

因此「PHP致命錯誤:調用未定義的函數curl_init()的......」是一種很常見的錯誤被拋出。

一些額外的調試技巧是..

  1. 的print_r curl_exec($處理)的響應;
  2. print_r curl_error($ handle)這會給你一個curl錯誤代碼。
  3. 使用set_opt和CURLOPT_PROXY設置curl代理,將該值設置爲您的ip:port,打開路由器上的端口8888並安裝charles proxy。這將向您顯示請求和響應的確切打印輸出。
+0

陣列7無法連接到主機,那是錯誤 – user3175158

+0

更改您的網址爲谷歌主頁。 'http://google.com'添加以下行。 curl_setopt($ ch,CURLOPT_FOLLOWLOCATION,1); 如果你仍然無法連接到主機,你有一個網絡問題。即阻止連接的防火牆。 – Calebj

+0

更改網址爲google.com的代碼工作正常... – user3175158

0

我已經閱讀了以前的答案,似乎你的代碼是好的,但問題是要連接遠程服務器,請試試這個:

<? 
//debug 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 
//debug end 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($ch, CURLOPT_URL,"http://mysite/scripts/showsomething.php"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
$result=curl_exec ($ch); 
curl_close ($ch); 
echo result; 
?> 

是什麼輸出?

備註:

您是否管理其他服務器?
如果沒有,是否有可能您的IP被遠程服務器阻止?
腳本http://mysite/scripts/showsomething.php是否包含錯誤?
如果你能對其進行編輯,請在showsomething.php通過在它的頂部添加以下代碼,使PHP錯誤:

error_reporting(E_ALL); 
ini_set('display_errors', 1); 
1

有可能是你的問題背後有幾個原因。

1)將<?更改爲<?php並查看其是否有效。

2)對於一個簡短的測試,從你的服務器運行這個代碼,並檢查它是否顯示你的輸出。

<?php 
    echo "sabuj"; 
?> 

3)某些網站在他們的網站請求中尋找useragent字符串。當他們發現沒有us​​eragent時,他們使用返回空白頁面。你可以通過像下面這樣設置一個useragent來解決這個問題。

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0'); 

4)你可以做的是,用ssh客戶端訪問服務器(如果您有任何),並與wget工具運行的網址,看看您是否可以下載你的頁面或不另一件事。

wget "http://yoursite/page/blabla/...php" 

5)最後,在啓用詳細模式下運行curl代碼。它會幫助你調試你的curl請求。

curl_setopt($ch, CURLOPT_VERBOSE,true);