0

我正在从 Laravel 8 迁移到Laravel 8 + Octane / Swoole。一切正常,但 php://input总是空的。另外,我检查 $_POST 和 $_SERVER 值。

file_get_contents('php://input')AWS SNS 消息验证器使用。

任何替代阅读php://input

PHP 代码

echo "php://input: ".file_get_contents('php://input');

使用 PHP-FPM

$ curl -i -X POST --data "dataaaa" https://example.com/aws/sns/webhook
php://input: dataaaa

使用辛烷值+Swoole

$ curl -i -X POST --data "dataaaa" https://example.com/aws/sns/webhook
php://input:
4

1 回答 1

1

问题

php://input在 Swoole 上不可用。总是相同的运行进程。

解决方案:PSR-7 请求

use Psr\Http\Message\RequestInterface;

public function sesSubscriptionWebhook(RequestInterface $request)
{
    // $input = file_get_contents('php://input'); // dont work on swoole
    $input = $request->getBody();
}

当然,使用辛烷值,symfony/psr-http-message-bridge并且nyholm/psr7Laravel PSR-7 请求所必需的。

此外,如果您的问题与AWS SES相关,您需要更改Message::fromRawPostData()Message::fromPsrRequest($request).

于 2021-07-29T21:33:10.623 回答