我正在发表如下帖子:
curl 'http://localhost/api.php' -H 'Content-Type: application/json' --data 'names=[{"name":"name"}]'
这导致帖子数据被删除。
如果我删除内容类型标头,例如
curl 'http://localhost/api.php' --data 'names=[{"name":"name"}]'
帖子数据存在。
Nginx 配置包括以下内容:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/;
server_name _;
location ~ \.php$
{
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
location / {
try_files $uri $uri/ =404;
index index.html;
autoindex on;
}
}
有人知道这是为什么吗?
答案1
我怀疑这是 Nginx 的错。试试
curl -H 'Content-Type: application/json' -d 'names=[{"name":"name"}]' 'http://localhost/api.php'
PHP 确实收到了 JSON 数据,但我能检索它的唯一方法是
$json = file_get_contents('php://input');
var_dump($json);
这给了
string(23) "names=[{"name":"name"}]"
即使 phpinfo() 也不会显示数据,只显示标题类型和内容大小。
我忘记了GeekForGeeks 指南