@@ -50,33 +50,37 @@ public function __construct(string $content = '', array $parameters = [])
50
50
public static function createFromInvocationEvent (HttpRequestEvent $ event , string $ scriptFilename ): self
51
51
{
52
52
$ content = $ event ->getBody ();
53
+ $ documentRoot = (string ) getcwd ();
53
54
$ headers = $ event ->getHeaders ();
54
55
$ host = $ headers ['x-forwarded-host ' ][0 ] ?? $ headers ['host ' ][0 ] ?? 'localhost ' ;
55
56
$ method = strtoupper ($ event ->getMethod ());
56
57
$ path = $ uri = $ event ->getPath ();
57
58
$ port = $ headers ['x-forwarded-port ' ][0 ] ?? 80 ;
58
59
$ queryString = $ event ->getQueryString ();
59
-
60
- if (!empty ($ queryString )) {
61
- $ uri = $ uri .'? ' .$ queryString ;
62
- }
60
+ $ scriptName = str_replace ($ documentRoot , '' , $ scriptFilename );
63
61
64
62
$ parameters = [
63
+ 'DOCUMENT_ROOT ' => $ documentRoot ,
65
64
'GATEWAY_INTERFACE ' => 'FastCGI/1.0 ' ,
66
65
'PATH_INFO ' => $ path ,
66
+ 'PHP_SELF ' => '/ ' .trim ($ scriptName .$ uri , '/ ' ),
67
67
'QUERY_STRING ' => $ queryString ,
68
68
'REMOTE_ADDR ' => '127.0.0.1 ' ,
69
69
'REMOTE_PORT ' => $ port ,
70
70
'REQUEST_METHOD ' => $ method ,
71
- 'REQUEST_URI ' => $ uri ,
71
+ 'REQUEST_TIME ' => time (),
72
+ 'REQUEST_TIME_FLOAT ' => microtime (true ),
72
73
'SCRIPT_FILENAME ' => $ scriptFilename ,
74
+ 'SCRIPT_NAME ' => $ scriptName ,
73
75
'SERVER_ADDR ' => '127.0.0.1 ' ,
74
76
'SERVER_NAME ' => $ host ,
75
77
'SERVER_PORT ' => $ port ,
76
78
'SERVER_PROTOCOL ' => $ event ->getProtocol (),
77
79
'SERVER_SOFTWARE ' => 'ymir ' ,
78
80
];
79
81
82
+ $ parameters ['REQUEST_URI ' ] = empty ($ queryString ) ? $ uri : $ uri .'? ' .$ queryString ;
83
+
80
84
if (isset ($ headers ['x-forwarded-proto ' ][0 ]) && 'https ' == strtolower ($ headers ['x-forwarded-proto ' ][0 ])) {
81
85
$ parameters ['HTTPS ' ] = 'on ' ;
82
86
}
@@ -100,6 +104,8 @@ public static function createFromInvocationEvent(HttpRequestEvent $event, string
100
104
// Force "HTTP_HOST" and "SERVER_NAME" to match because of the "X_FORWARDED_HOST" header.
101
105
$ parameters ['HTTP_HOST ' ] = $ parameters ['SERVER_NAME ' ];
102
106
107
+ ksort ($ parameters );
108
+
103
109
return new self ($ content , $ parameters );
104
110
}
105
111
0 commit comments