加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

(Linux CLI PHP)在执行期间捕获CURL的详细输出到文件

发布时间:2020-12-13 23:26:03 所属栏目:Linux 来源:网络整理
导读:我刚刚注意到,如果你运行一个命令行php脚本,该脚本使用curl并启用CURLOPT_VERBOSE选项,则无法捕获输出… 例: $php myscript.php logfile.txt 21 所有PHP输出都将进入日志文件,但curl的输出仍然会出现在屏幕上. 如何使用curl输出捕获PHP输出? $ch = curl_in
我刚刚注意到,如果你运行一个命令行php脚本,该脚本使用curl并启用CURLOPT_VERBOSE选项,则无法捕获输出…

例:

$php myscript.php > logfile.txt 2>&1

所有PHP输出都将进入日志文件,但curl的输出仍然会出现在屏幕上.

如何使用curl输出捕获PHP输出?

$ch = curl_init();  // Initialising cURL
    curl_setopt($ch,CURLOPT_VERBOSE,TRUE);
    curl_setopt($ch,CURLOPT_USERAGENT,$this->agentString);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,5);
    curl_setopt($ch,CURLOPT_URL,$url);    
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE); 
    $data = curl_exec($ch); 
    curl_close($ch);

编辑:

添加线

curl_setopt($ch,CURLOPT_STDERR,STDOUT);

似乎可以做到这一点.但是,现在看来curl输出与php的输出冲突,并用自己的输出覆盖日志文件.奇怪的!

编辑2:

这有效

$php myscript.php >> logfile.txt 2>&1

解决方法

实际上,我的第一个答案是错误的. cURL的手册页说:

URLOPT_VERBOSE TRUE to output verbose information. Writes output to
STDERR,or the file specified using CURLOPT_STDERR.

因此,为CURLOPT_STDERR指定STDOUT将起作用:

curl_setopt($ch,true);
curl_setopt($ch,STDOUT);

原始答案:

检查您是否也设置了CURLOPT_RETURNTRANSFER.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读