我们正在尝试在服务器上调试一些cURL错误,我想看到STDERR日志.目前,我们可以看到我们的错误是“错误代码:7”,我们无法连接到目标服务器.我们已经联系了主机,并制定了特殊规则来开放我们需要的港口,我们甚至暂时忽略证书.

不过,我们无法连接.我需要调试这个,但是我看不到任何有关的信息.

提到“VERBOSE”和“STDERR”的线条是我最重要的.没有任何东西写入$curl_log.我究竟做错了什么?遵循手册逻辑,这应该是正确的…

使用PHP

<?PHP
$curl = curl_init();
$curl_log = fopen("curl.txt",'w');
$url = "http://www.google.com";

curl_setopt_array($curl,array(
    CURLOPT_URL             => $url,// Our destination URL
    CURLOPT_VERBOSE         => 1,// Logs verbose output to STDERR
    CURLOPT_STDERR          => $curl_log,// Output STDERR log to file
    CURLOPT_SSL_VERIFYPEER  => 0,// Do not verify certificate
    CURLOPT_FAILONERROR     => 0,// true to fail silently for http requests > 400
    CURLOPT_RETURNTRANSFER  => 1            // Return data received from server
));

$output = fread($curl_log,2048);
echo $output; // This returns nothing!
fclose($curl_log);

$response = curl_exec($curl);
//...restofscript...
?>

从PHP手册:http://php.net/manual/en/function.curl-setopt.php

CURLOPT_VERBOSE TRUE to output verbose information. Writes output to STDERR
CURLOPT_STDERR An alternative location to output errors to instead of STDERR.

这不是一个权限问题,我已经在服务器端设置了777的文件和脚本权限,我的本地客户端是Windows,并且从来没有关心权限设置(它只适用于开发人员).

你在你的例子中犯了几个错误:

1)您必须在从“详细日志”读取之前调用curl_exec(),因为curl_setopt()不执行任何操作,因此在curl_exec()之前不能记录任何内容.

2)你打开$curl_log = fopen(“curl.txt”,“w”);只有写,所以没有什么可以读,即使你写入文件并倒回内部文件指针.

所以正确的缩短代码应该如下所示:

<?PHP
$curl = curl_init();
$curl_log = fopen("curl.txt",'rw'); // open file for READ and write
$url = "http://www.google.com";

curl_setopt_array($curl,CURLOPT_VERBOSE         => 1,CURLOPT_STDERR          => $curl_log,CURLOPT_RETURNTRANSFER  => 1
));

$response = curl_exec($curl);

rewind($curl_log);
$output= fread($curl_log,2048);
echo "<pre>". print_r($output,1). "</pre>";
fclose($curl_log);

// ...

?>

注意:详细日志可能长于2048字节,因此您可以在curl_exec()之后“fclose”$curl_log,然后使用file_get_contents()读取整个文件.在这种情况下,点2)不应被视为错误:-)

php – 使cURL输出STDERR到文件(或字符串)的更多相关文章

  1. ios – 使用Swift的Lumberjack 2.0记录器

    我以前使用物镜C的Lumberjack记录器,我喜欢它.现在我开始学习Swift,我不能在那里使用我最喜欢的记录器.有人可以一步一步地写出我能做到的事吗?在Lumberjack2.0发布之前,我尝试在这里找到一些东西,但所有主题都是自定义包装器.我做了什么:>我用Cocoapods添加了Lumberjack;>我将“#import”添加到Bridging-Header文件中.我不知道接下来该怎么办?因为在ObjC中我有宏:staticconstintddLogLevel=LOG_LEVEL_INFO;el

  2. ios – 如何处理退款/取消应用内购买

    我正在尝试处理iOS的退款应用内购买.但我找不到明确的指导方针来做到这一点.所以我有一个会员类型的应用程序内购买功能,其中用户凭据不一定与itunes帐户绑定.当有人进行购买时,我可以参考哪种标识符,并且当他们通过苹果申请退款时具有相同的标识符?我需要立即取消会员资格.谢谢!解决方法我最终存储了收据字符串并运行cron来完成事务并查找取消字段.

  3. iOS:如何以编程方式在应用程序中从私钥和x509certificate创建PKCS12(P12)密钥库?

    这个问题显然很相似,但没有任何答案:Programmaticallycreateax509certificateforiPhonewithoutusingOpenSSL在我们的应用程序(服务器,客户端)中,我们正在实现客户端身份验证(基于X509Certificate的SSL).我们已经有办法生成密钥对,创建PKCS10证书签名请求,由自签名CA签名并创建X509Certificate,然后发回.

  4. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

  5. 简析Swift和C的交互

    之前好像简单说过Swift和Objective-C的交互问题。其实我们也可以用Swift调用纯C代码或者基于C的第三方库。)Swift官方文档中,以及那本已经被迅速翻译为中文的ibooks书中,都提到了Swift调用Objective-C和C是有很好支持的。本内容包括Swift调用C和相应的C调用Swift,项目混编。对于C来说,最头疼的莫过于指针,而Swift是一门没有指针的语言。这些标准库函数表示为Darwin.C.HEADER.name。实际上由于Swift模块结构是平坦的,他们均位于Darwin中

  6. swift学习2 元组 tuples

    swift中出现了一种新的数据结构,非常牛掰的元组tuples如果懂PHP的猿,会发现这个元组和PHP的数组非常类似,同样是可以默认不指定key,也可以指定key目前的学习疑问是,如何进行元组的遍历?

  7. swift接口的使用

    swiftAPI的使用最近楼主要使用swift的API接口,楼主有一个习惯,不管开发需要用到什么知识,都喜欢看官方文档,虽然大部分是英文,但是用起来还是感觉可靠,不过对于openstack给的swiftAPI接口,可叫我吃了不少苦,所以写下这篇文章希望给有同样困惑的朋友帮助。获得的结果如下:%Total%Received%XferdAverageSpeedTimeTimeTimeCurrentDloadUploadTotalSpentLeftSpeed10013771001282100959382695-

  8. Swift 接入微信 Mars_Xlogger 填坑指南——Jinkey 原创

    Step1下载代码使用gitclone或者直接下载zip,解压后进入目录mars-master/mars/libraries,看到有一个build_apple.py的文件Step2编译Mars在终端进入工程目录输入然后回答一系列问题第一个问题inputprefixforsavedirectory.liketrunk,br,tag:输入保存目录的前缀第二个问题Entermenu:buildmarsforiphone.buildmarsforiphonewithbitcode.buildxlogforipho

  9. 尝试使用swift mailer,gmail smtp,php发送邮件

    这里是我的代码:在运行时出现此错误…

  10. swift – 如果存在管道,则通过NSTask终止cURL

    我试图在Swift中为一个简单的命令行批处理脚本同步读取URL的内容.为了简单起见,我使用cURL–我知道如果必须的话,我可以使用NSURLSession.我也在使用OSX上的Swift开源版本进行swift构建.问题是,在某些URL上,如果stdout已重定向到管道,则NSTask永远不会终止.但是,如果删除管道或更改URL,则任务成功.使用来自终端的curl直接运行任何示例都会成功,因此在从特

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部