Я не могу получить данные POST в приложение на сервере AWS nginx PHP - PullRequest
0 голосов
/ 24 января 2019

У меня очень странная проблема ... на моем удаленном веб-сервере для этого конкретного приложения, когда я пытаюсь получить вход JSON (любым способом), я получаю либо NULL, либо пустое ("") возвращение. Странная часть этой проблемы в том, что она отлично работает на моей локальной машине. И когда я говорю «работает нормально», это означает, что я могу сделать запрос через Postman к конечной точке API моей локальной машины, и он делает то, что должен делать. Другая странность в том, что на этом самом веб-сервере (в разных файлах, но все же на этом веб-сервере) я могу получать входные данные JSON очень хорошо.

Я пробовал разные способы отправки данных JSON на этот удаленный сервер. Я обработал необработанные данные, отправил их почтальоном, отправил из приложения webhooks в Zapier и отправил из другого веб-приложения. Все эти разные приложения дали мне нулевой возврат при попытке получить данные JSON. Вот как я пытаюсь получить его:

// index.php, the API endpoint processing file
<?php
declare(strict_types=1);

require_once '../../vendor/autoload.php';
require_once '../../model/model.php';

use ShinePHP\{Crud, CrudException, EasyHttp, EasyHttpException, HandleData, HandleDataException};

try {
    $data = EasyHttp::turnJsonInputIntoArray();
} catch (EasyHttpException $ehe) {
    echo json_encode(['status' => 'failure', 'message' => $ehe->getMessage()]);
    exit;
}

И это метод turnJsonInputIntoArray() в классе EasyHttp:

public static function turnJsonInputIntoArray(string $urlToRetrieveFrom = 'php://input') : array {

    // Check if JSON is null, if it is, throw EasyHttpException, if not, return the decoded assoc array.
    if (json_decode(file_get_contents($urlToRetrieveFrom), true) === null) {
        throw new EasyHttpException('No data retrieved from url: '.$urlToRetrieveFrom);
    } else {
        return json_decode(file_get_contents($urlToRetrieveFrom), true);
    }

}

У меня var_dumped $_POST (возвращен пустой массив), $HTTP_RAW_POST_DATA (возвращен NULL) и file_get_contents('php://input') (возвращена пустая строка). В журнале ошибок nginx ничего не существует, кроме пользовательского исключения, которое существует, потому что в php: // input ничего нет. Ничего не помогло, и я действительно не знаю, как еще получить мои данные JSON.

Как я могу получить данные JSON в мой PHP-скрипт, работающий на удаленном сервере?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...