Я делаю такие сообщения:
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;
}
}
Кто-нибудь знает, почему это так?
Я сомневаюсь, что это делает Нгинкс. Попробуйте
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 howto