php – 使cURL输出STDERR到文件(或字符串)

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 使cURL输出STDERR到文件(或字符串)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我们正在尝试在服务器上调试一些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

这不是一个权限问题,我已经在服务器端设置了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,请注明来意。