Почему Yii2 REAST api принимает json тестируя через postman, но видит лишь пустой массив когда отправляю REST api c json с php-файла?

Проблема, с которой вы столкнулись, кажется интересной. Рассмотрим несколько возможных причин, почему ваш REST API на Yii2 может принимать JSON при тестировании через Postman, но видеть только пустой массив, когда вы отправляете запрос с json в php-файле.

1. Неправильное чтение данных из тела запроса:
Проверьте, что ваш код правильно читает данные из тела запроса. В Yii2 данные JSON из запроса можно получить с помощью Yii::$app->request->getBodyParams(). Убедитесь, что вы используете этот метод для получения данных.

    $data = Yii::$app->request->getBodyParams();

2. Неправильный заголовок Content-Type:
Убедитесь, что вы правильно устанавливаете заголовок Content-Type в своем запросе с json-данными. Он должен быть установлен на "application/json". В противном случае, Yii2 может не распознать, что данные в запросе являются JSON и не сможет корректно их обработать.

    $headers = [
        'Content-Type' => 'application/json',
    ];

3. Неправильное формирование данных JSON в php-файле:
Проверьте, что вы правильно формируете данные JSON перед отправкой в запросе из php-файла. Убедитесь, что данные передаются в виде строки JSON с использованием функции json_encode().

    $data = [
        'key1' => 'value1',
        'key2' => 'value2'
    ];
    $jsonData = json_encode($data);

4. Проблемы с CORS (Cross-Origin Resource Sharing):
CORS может быть причиной проблемы, если ваш REST API на Yii2 находится на другом домене или поддомене. Убедитесь, что вы правильно настроили заголовки CORS в вашем приложении Yii2. Необходимо указать разрешенные домены, с которых разрешено делать запросы к вашему API.

    'components' => [
        'response' => [
            'formatters' => [
                yiiwebResponse::FORMAT_JSON => [
                    'class' => 'yiiwebJsonResponseFormatter',
                    'prettyPrint' => YII_DEBUG, // optional
                    'encodeOptions' => JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE,
                ],
            ],
            'headers' => [
                'Access-Control-Allow-Origin' => ['*'],
                'Access-Control-Allow-Headers' => ['Content-Type'],
                'Access-Control-Allow-Methods' => ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
            ],
        ],
    ],

5. Проблемы с серверной конфигурацией:
Проверьте, что ваш сервер правильно настроен и поддерживает обработку и передачу данных JSON. Убедитесь, что у вас установлен необходимый модуль или расширение для работы с JSON, например, JSON extension для PHP, или модуль mod_json для Apache.

Это некоторые возможные причины проблемы, с которой вы столкнулись. Однако, для более точной диагностики проблемы я рекомендую вам проверить логи приложения Yii2 или использовать отладочные инструменты, чтобы увидеть детали запроса и ответа.