fopen返回的内容为空php://stdin
我无法让fopen读取PHP中的内容流。没有抛出错误,内容始终为空字符串 这是我的密码:fopen返回的内容为空php://stdin,php,nginx,fpm,Php,Nginx,Fpm,我无法让fopen读取PHP中的内容流。没有抛出错误,内容始终为空字符串 这是我的密码: $contents=''; $handle = fopen("php://stdin", "r") or error_log('got some error'); while (!feof($handle)) { $contents .= fread($handle, 8192); } fclose($handle); error_log($contents); 然后从邮递员那里,我在我的服务器
$contents='';
$handle = fopen("php://stdin", "r") or error_log('got some error');
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
fclose($handle);
error_log($contents);
然后从邮递员那里,我在我的服务器url上发送POST请求,如
职位
我在上面的请求中发送了post数据,我也尝试了表单编码、二进制和原始
但是error_log将空字符串记录到日志文件中,这意味着fopen确实可以工作,但它得到了空内容
我也检查了php.ini设置,并且allow_url_fopen设置也是真的
我正在使用PHP7.1-fpm在nginx上进行测试。我最近从Apache和PHP5.6切换到nginx和php7.1-fpm,它停止了工作
它在Apache和PHP5.6上完全可以正常工作
这里怎么了?
非常感谢您的帮助。PHP的默认流中可能存在一些误解
- 如果您以命令的形式运行PHP脚本,CLI界面将为您提供
- 如果您在web服务器/cgi/PHP fpm环境中运行PHP脚本,则没有
没有问题。您将获得流(用于帖子正文)php://stdin
参考:是,实际上我正在以CLI命令的形式运行此命令。基本上,我在postfix上设置了一个钩子,将传入的电子邮件通过管道传输到php脚本,这样每当我收到电子邮件时,就会执行一个php脚本。在CLI脚本中使用php://stdin 那么内容是空的。不过,感谢您对这一点的上述澄清。但是你能告诉我什么时候吗php://stdin 当CLI脚本尝试使用访问内容流时,内容为空php://stdin? 同样的代码适用于apache,但在服务器操作系统升级后停止工作您使用的是什么操作系统?有可能是操作系统/后缀升级问题吗?当前的操作系统设置是带有Nginx和PHP7.1-FPM的Ubuntu 16.04。。。早期的安装是带有Apache2和PHP5.6的Ubuntu14.04。。。我只是在操作系统上做了“发布升级”,这意味着我没有再次安装postfix,旧的配置对我的postfix有效,只是这个电子邮件挂钩不起作用
echo“hello world”| php你的脚本。php
返回了什么?是“hello world”吗| php your-script.php并将内容记录到日志文件中,以确认这是后缀问题。非常感谢你的帮助。你知道postfix不向脚本发送内容会有什么问题吗?如果你说,我可以发布我的main.cf配置。