1

我正在试验这个包装器,特别是从 HTTP 请求中提取原始数据。关于卷曲:

Protocol php not supported or disabled in libcurl

查看了我的 phpinfo,这是支持的:

dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, pop3, pop3s, rtsp, scp, sftp, smtp, smtps, telnet, tftp 

PHP中有没有办法(如果可能的话使用这个包装器)从任意请求中提取原始数据(不通过配置文件将php添加到该列表中)?

4

2 回答 2

0

可能更好用:

$data = file_get_contents("php://input");

由于 cURL 进行新连接,因此可能无法访问与请求一起发送的数据。

于 2013-05-22T11:51:07.877 回答
0

PHP DOC 很明显两者之间存在很大差异http://php://您的问题就像问为什么chrome://不工作firefox

PHP 提供了许多杂项 I/O 流,允许访问 PHP 自己的输入和输出流、标准输入、输出和错误文件描述符、内存中和磁盘支持的临时文件流,以及可以操作其他文件资源的过滤器因为它们被读取和写入。

php://stdin, php://stdout and php://stderr

php://stdin、php://stdout 和 php://stderr 允许直接访问 PHP 进程的相应输入或输出流。该流引用了一个重复的文件描述符,因此如果您打开 php://stdin 然后关闭它,您只会关闭描述符的副本 - STDIN 引用的实际流不受影响。请注意,在 PHP 5.2.1 之前,PHP 在这方面表现出错误的行为。建议您简单地使用常量 STDIN、STDOUT 和 STDERR,而不是使用这些包装器手动打开流。

这里是一个典型的用法

$temp = fopen("php://temp", "r+");

$curl = curl_init("__YOUR__URL");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FILE, $temp);
curl_exec($curl);
curl_close($curl);

fseek($temp, 0);
while(! feof($temp)) {
    echo fgets($temp);
}
fclose($temp);
于 2013-05-22T12:14:21.480 回答