【问题标题】:$_POST and file_get_contents('php://input') empty$_POST 和 file_get_contents('php://input') 为空
【发布时间】:2021-09-20 11:59:35
【问题描述】:

好的,事情是这样的: 我正在配置一个新的 SOAP 服务器,我有一种测试它的方法,(由其他人提供,并且可以与旧服务器一起使用),所以我知道测试人员很好。 为了跟踪问题我做了一个测试,在索引文件的开头放几行知道发生了什么,然后我发现我使用测试时的请求方法是“POST”,还有$raw_post_data和$ _POST 为空。 使用的 PHP 版本是 5.6.40。 (我使用 PHP_fpm 运行多个版本) variables_order字符串包含P,enable_post_data_reading开启,post_max_size为2048M,upload_max_filesize,apache服务已重启。 我事件检查以删除 de .htaccess 文件以避免重定向。 但我得到的只是到处都是空字符串。测试线 (我保证会在我开始工作时封装“php://input”的读取)

测试代码:

<?php    
     $raw_post_data = file_get_contents('php://input');
     $logfile = fopen('path/to/log/file.log',"a");
     fputs($logfile, "request method: ".$_SERVER['REQUEST_METHOD'].PHP_EOL);
     foreach ($_POST as $key => $value){
          fputs($logfile, "{$key} = {$value}\r\n");
     }
     fputs($logfile, "request: ".$raw_post_data.PHP_EOL);
     fputs($lofgile, ' ****** '.PHP_EOL);
     fclose($logfile);

以上几行,用同样的方法在旧服务器中发布,在新服务器中只得到空字符串。

输入是一个 XML 文件,其中包含一些活动的所有数据,该文件在较旧的服务器上运行良好,所以我知道这与编码和一些识别数据无关。

编辑:我已经在 PHP 7.4 中对其进行了测试,但仍然存在同样的问题(我正在使用具有多个 PHP 版本的 PHP-FPM,因此只需更改 .htaccess 以指向处理程序)

【问题讨论】:

  • 您的意见是什么? POST 可能有点棘手,具体取决于您发送的数据格式,即JSON、表单编码、原始、...
  • @waterloomatt 添加了有关输入、一些标识数据(用户和密码)和 XML 文件的详细信息。
  • $raqw_post_data 复制/粘贴错误?另外,请打开错误报告并报告任何警告/错误 - stackoverflow.com/a/21429652/296555
  • "使用的 PHP 版本是 5.6.40" - 还是?为什么?
  • 打开错误报告很重要,因为它可能是由服务器设置引起的,例如默认为 1000 的 max_input_vars。打开错误报告后,您将看到警告被抛出。此外,正如之前的评论提到的那样,PHP 5.6 已经过时并且不再受支持。你现在真的应该使用 8+。

标签: php apache soap


【解决方案1】:

我有答案 (thanks to waterloomat):应用程序(不是我的,也无权访问代码)正在以多部分的形式发送数据;所以,当我试图阅读时,这是不可能的。我需要开发一种方法来读取它,并让我访问数据。

     $inputstream = "";
     if (is_resource($input = fopen('php://input', 'rb')) === true)
        {
                while ((feof($input) !== true) && (($line = fgets($input)) !== false))
                {
                        $inputstream .= $line;
                }
                fclose($input);
        }
     else {
        return "Error opening data.";
     }

【讨论】:

    猜你喜欢
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 2015-01-08
    • 2018-06-08
    • 2012-08-09
    • 2011-06-09
    • 1970-01-01
    相关资源
    最近更新 更多