Mon*_*eus 5 php windows curl response
Windows 7 x64
PHP 7.2.2 x64
Run Code Online (Sandbox Code Playgroud)
我正在尝试查看简单的请求有效负载,因此我已经按照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);
Run Code Online (Sandbox Code Playgroud)
但与示例不同,该示例表明我可以期望得到类似以下内容,但我绝对没有输出:
* 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
Run Code Online (Sandbox Code Playgroud)
$page 包含一个Google 404页面,所以我知道请求成功了。
有人知道我是否需要解决其他设置,或者我做错了什么?我特别对有效载荷的主体感兴趣。
是的,我知道Google卷曲并不是特别有用;我试图使这个简单的示例正常工作,以便我可以调试神秘地失败的API交互。
根据评论请求进行更新
我不能做,curl -v但是print_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
)
)
Run Code Online (Sandbox Code Playgroud)
tl; dr
CURLOPT_STDERR 必须设置为特定的值。
设置curl_setopt($c, CURLOPT_STDERR, fopen('/curl.txt', 'w+'));解决了我的问题。
事实证明,由于curl_setopt($c, CURLOPT_VERBOSE, 1);某种原因(我尚未发现)没有将输出打印到STDERR。我没有在任何PHP,Apache或Event Viewer日志中找到输出。
设置之后curl_setopt($c, CURLOPT_STDERR, fopen('/curl.txt', 'w+'));,我可以在curl.txt文件中看到输出。
我不确定这是否特定于Windows环境。
| 归档时间: |
|
| 查看次数: |
2552 次 |
| 最近记录: |