php - CURLOPT_VERBOSE 不工作

标签 php windows curl response

Windows 7 x64
PHP 7.2.2 x64

我正在尝试查看一个简单的请求负载,因此我根据 https://docstore.mik.ua/orelly/webprog/pcook/ch11_07.htm 创建了一个 PHP 文件

<?php
$c = curl_init('https://www.google.com');
curl_setopt($c, CURLOPT_VERBOSE, 1);
curl_setopt($c, CURLOPT_POST, 1);
curl_setopt($c, CURLOPT_POSTFIELDS, 'monkey=uncle&rhino=aunt');
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
$page = curl_exec($c);
curl_close($c);

但我绝对没有得到与示例不同的输出,该示例表明我可以期待类似的内容:

* Connected to www.example.com (10.1.1.1)
> POST /submit.php HTTP/1.1
Host: www.example.com
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Content-Length: 23
Content-Type: application/x-www-form-urlencoded

monkey=uncle&rhino=aunt* Connection #0 left intact
* Closing connection #0

$page 包含一个 Google 404 页面,所以我知道请求成功了。

有谁知道我是否需要解决其他设置,或者我是否做错了什么?特别是,我对有效载荷的主体感兴趣。

是的,我知道 curl'ing Google 并不是特别有用;我正在尝试让这个简单的示例正常工作,以便我可以调试神秘失败的 API 交互。

更新,根据评论请求

我不能执行 curl -vprint_r( curl_version() ); 会产生:

Array
(
    [version_number] => 473344
    [age] => 4
    [features] => 2428829
    [ssl_version_number] => 0
    [version] => 7.57.0
    [host] => x86_64-pc-win32
    [ssl_version] => OpenSSL/1.1.0g
    [libz_version] => 1.2.11
    [protocols] => Array
        (
            [0] => dict
            [1] => file
            [2] => ftp
            [3] => ftps
            [4] => gopher
            [5] => http
            [6] => https
            [7] => imap
            [8] => imaps
            [9] => ldap
            [10] => pop3
            [11] => pop3s
            [12] => rtsp
            [13] => scp
            [14] => sftp
            [15] => smb
            [16] => smbs
            [17] => smtp
            [18] => smtps
            [19] => telnet
            [20] => tftp
        )

)

最佳答案

tl;dr

CURLOPT_STDERR必须设置为特定的内容。

设置 curl_setopt($c, CURLOPT_STDERR, fopen('/curl.txt', 'w+')); 解决了我的问题。


事实证明,curl_setopt($c, CURLOPT_VERBOSE, 1); 没有将输出打印到 STDERR,原因我还没有发现。我没有在我的任何 PHP、Apache 或事件查看器日志中找到输出。

设置 curl_setopt($c, CURLOPT_STDERR, fopen('/curl.txt', 'w+')); 后,我能够在 curl.txt 中看到输出 文件。

我不确定这是否特定于 Windows 环境。

关于php - CURLOPT_VERBOSE 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49658719/

相关文章:

php - 如果自动加载,则阻止 codeigniter session 库发送 set-cookie header 参数

php - 如何使用cURL和PHP从使用SSL的网站获取数据?

php - 企业代理背后的 Apache

php - 我如何知道我的curl 代理是否已关闭?

SQL语法中的PHP错误MYSQLi

php - 错误号 : 1064 CodeIgniter query builder

windows - SVN 更新因文件夹名称相同而失败,只是大小写不同

windows - 使用多个显卡在 Windows XP 中进行 OpenGL 渲染

c++ - getaddrinfo() 无法解析 winsock

file - cURL - 使用 cURL 来 ftp 文件并保留文件的原始时间戳