Наша команда недавно перешла на Laminas и при этом столкнулась с проблемой того, как наше приложение обрабатывает загрузку файлов. У нас есть 2 приложения (оба MVC): одно приложение просмотра и одно приложение API. Наше приложение View обрабатывает все запросы от браузера и прокси-запросов API через наш ApiProxyController. Это работает для каждого из наших запросов, за исключением загрузки файлов. Для этих запросов (multipart/form-data;
) мы видели, что к моменту поступления запроса в наше приложение API тело запроса пусто.
Мы столкнулись с этой проблемой при использовании обеих последних версий HTTP-клиента Guzzle и клиента Laminas. Вот фрагмент кода, который мы используем для передачи запроса от нашего приложения представления:
/* @var $request \Laminas\Http\PhpEnvironment\Request */
$request = $this->getRequest();
// URI object used to build PSR-7 request; update URI for proper forwarding
$uri = $request->getUri();
$uri->setHost($this->apiHost);
$psr7Request = Psr7ServerRequest::fromLaminas($request)
->withoutHeader('Host')
->withHeader('Authorization', sprintf('Bearer %s', $identity->getAccessToken()->getToken()));
$guzzle = new \GuzzleHttp\Client([
// Turn off SSL certificate verification
'verify' => false,
// Prevent exceptions from being thrown due to HTTP status codes (e.g. 4xx, 5xx)
'exceptions' => false,
]);
$psr7Response = $guzzle->send($psr7Request);
$response = Psr7Response::toLaminas($psr7Response);