脚本宝典收集整理的这篇文章主要介绍了php – 使cURL输出STDERR到文件(或字符串),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
不过,我们无法连接.我需要调试这个,但是我看不到任何有关的信息.
提到“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
这不是一个权限问题,我已经在服务器端设置了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到文件(或字符串)全部内容,希望文章能够帮你解决php – 使cURL输出STDERR到文件(或字符串)所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。