function Psr17Factory::buildServerRequestFromGlobals
File
-
vendor/
php-http/ discovery/ src/ Psr17Factory.php, line 180
Class
- Psr17Factory
- A generic PSR-17 implementation.
Namespace
Http\DiscoveryCode
private function buildServerRequestFromGlobals(ServerRequestInterface $request, array $server, array $files) : ServerRequestInterface {
$request = $request->withProtocolVersion(isset($server['SERVER_PROTOCOL']) ? str_replace('HTTP/', '', $server['SERVER_PROTOCOL']) : '1.1')
->withUploadedFiles($this->normalizeFiles($files));
$headers = [];
foreach ($server as $k => $v) {
if (0 === strpos($k, 'HTTP_')) {
$k = substr($k, 5);
}
elseif (!\in_array($k, [
'CONTENT_TYPE',
'CONTENT_LENGTH',
'CONTENT_MD5',
], true)) {
continue;
}
$k = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', $k))));
$headers[$k] = $v;
}
if (!isset($headers['Authorization'])) {
if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) {
$headers['Authorization'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION'];
}
elseif (isset($_SERVER['PHP_AUTH_USER'])) {
$headers['Authorization'] = 'Basic ' . base64_encode($_SERVER['PHP_AUTH_USER'] . ':' . ($_SERVER['PHP_AUTH_PW'] ?? ''));
}
elseif (isset($_SERVER['PHP_AUTH_DIGEST'])) {
$headers['Authorization'] = $_SERVER['PHP_AUTH_DIGEST'];
}
}
foreach ($headers as $k => $v) {
try {
$request = $request->withHeader($k, $v);
} catch (\InvalidArgumentException $e) {
// ignore invalid headers
}
}
return $request;
}