cURL显示空白页面

时间:2014-01-25 06:31:41

标签: php 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]; 
?>

此代码在localhost上运行正常,但在服务器上运行正常...

5 个答案:

答案 0 :(得分:1)

您的问题可能有几个原因。

1)将<?更改为<?php并查看其是否有效。

2)对于简短测试,请从服务器运行此代码并检查它是否显示输出。

<?php
  echo "sabuj";
?>

3)某些网站在其网站请求中寻找有用的字符串。当他们发现没有使用者时,他们会使用返回空白页面。您可以通过设置如下所示的使用者来克服此问题。

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

答案 1 :(得分: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);

希望它有所帮助...

答案 2 :(得分:0)

将错误报告一直转为11。

error_reporting(E_ALL);

这将告诉您有关您所面临的问题的更多信息。在开发环境中使用curl并移动到服务器时最常见的罪魁祸首是缺少curl包。

您可以通过执行以下操作来检查是否已安装卷曲:

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

因此“PHP致命错误:在...中调用未定义的函数curl_init()”是一个非常常见的错误。

一些额外的调试技巧是..

  1. print_r curl_exec($ handle);
  2. 的响应
  3. print_r curl_error($ handle)这会给你一个卷曲错误代码。
  4. 使用set_opt和CURLOPT_PROXY设置curl代理,将值设置为ip:port,打开路由器上的端口8888并安装charles代理。这将显示请求和响应的确切打印输出。

答案 3 :(得分: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);

答案 4 :(得分:0)

我已经通过添加以下代码解决了该问题。 问题是SSL。

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

我希望这会有所帮助。