我的卷曲代码显示了一个空白页
<?
$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上运行正常,但在服务器上运行正常...
答案 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()”是一个非常常见的错误。
一些额外的调试技巧是..
答案 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);
我希望这会有所帮助。