原始数据通过php包装的方法?抛出错误


Method of raw data via php wrappers? Throws an error

我正在试验这个包装器,特别是从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到该列表通过配置文件)?

最好使用:

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

作为cURL做一个新的连接,因此可能无法访问与请求一起发送的数据。

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在这方面的错误行为直到PHP 5.2.1。建议您直接使用常量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);
相关文章: