file_get_contents('php://input') 不工作。空 - NULL

file_get_contents('php://input') not working. Empty - NULL

我在过去的 12 小时里遇到了这个问题,我阅读了大约 50 篇文章,这里有 50 个问题,我无法解决它。我会更精确,我希望其他人也能得到解决方案。

问题: 我在 namech**** 中有一个托管帐户,还有一个本地服务器。 Linux 那里 Xampp Windows 这只适用于我的本地服务器。

test.php:

<?php    
    $data = json_decode(file_get_contents("php://input"), true);
        var_dump($data);
?>

post请求是:

POST /test.php HTTP/1.1
Host: myweb.io
Content-Type: application/json
Content-Length: 77

{
  "test": "product/created",
  "other": "https://google.com/"
}

我使用 REQBIN 来测试 POST 请求。

这是我托管中的回复:

HTTP/1.1 200 OK
Date: Sun, 03 May 2020 17:04:33 GMT
Server: Apache
X-Powered-By: PHP/7.4.5
Content-Encoding: gzip
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

NULL

这是在我的本地环境中使用 XAMPP

的正确响应
HTTP/1.1 200 OK
Date: Sun, 03 May 2020 17:15:19 GMT
Server: Apache/2.4.41 (Win64) OpenSSL/1.1.1c PHP/7.4.3
X-Powered-By: PHP/7.4.3
Content-Length: 94
Content-Type: text/html; charset=UTF-8

Array
(
    [test] => product/created
    [other] => https://google.com/
)

我尝试过的事情:

我修复了它,不知道如何解决,但我认为解决方案是: 完全删除我的 htaccess,没有重定向(http 到 https)。 不要使用 reqbin 进行测试,使用 php 纯代码或 PostMan 进行测试。

信不信由你:

改变: RewriteRule ^ /%1 [NC,L,R]

RewriteRule ^ %1 [NC,L,R]

然后回到

RewriteRule ^ /%1 [NC,L,R]

同样 重写规则 ^(.*?)/?$ /$1.php [NC,L]

RewriteRule ^(.*?)/?$ $1.php [NC,L]

然后回到

RewriteRule ^(.*?)/?$ /$1.php [NC,L]

似乎解决了!

我也有这个问题,我发现我的地址是http://而不是https://

现在我有了 file_get_contents("php://input")

希望这能解决您的问题。

我遇到了同样的问题;显然 HTTP 重定向(例如 301 到 https)禁止数据一起重定向。

确保没有重定向。