簡體   English   中英

cURL 顯示空白頁

[英]cURL shows blank page

我的 curl 代碼顯示一個空白頁

 <?
$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]; 
?>

這段代碼在本地主機上工作正常,但在服務器上不起作用......

您的問題背后可能有多種原因。

1) 改變<? 進入<?php看看它是否有效。

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

<?php
  echo "sabuj";
?>

3) 某些站點在其網站請求中尋找用戶代理字符串。 當他們找不到用戶代理時,他們使用返回空白頁。 您可以通過設置如下所示的用戶代理來克服這個問題。

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

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

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

5) 最后,在啟用詳細模式的情況下運行 curl 代碼。 它將幫助您調試 curl 請求。

curl_setopt($ch, CURLOPT_VERBOSE,true);

工作代碼...

       $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);

希望能幫助到你...

將您的錯誤報告一直設置為 11。

error_reporting(E_ALL);

這將告訴您更多有關您面臨的問題的信息。 在開發環境中使用 curl 並移動到服務器時,最常見的罪魁禍首是缺少 curl 包。

您可以通過執行以下操作來檢查是否安裝了 curl:

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

因此,“PHP Fatal error: Call to undefined function curl_init() in...”是一個非常常見的錯誤。

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

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

我已經閱讀了以前的答案,似乎您的代碼很好,但問題是與遠程服務器的連接,請嘗試以下操作:

<?
//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是否包含任何錯誤?
如果你能對其進行編輯,請啟用PHP錯誤showsomething.php通過在它的頂部加入如下代碼:

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

我通過添加以下代碼解決了這個問題。 問題是 SSL。

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

我希望它有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM