44
55use Symfony \Component \HttpFoundation \Request ;
66use Symfony \Component \HttpFoundation \Response ;
7+ use Symfony \Component \HttpFoundation \ParameterBag ;
78use Symfony \Component \HttpKernel \HttpKernelInterface ;
89use Symfony \Component \Process \ProcessBuilder ;
910
@@ -26,18 +27,22 @@ public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQ
2627 return new Response ('The requested file could not be found. ' , 404 );
2728 }
2829
30+ $ requestBody = $ request ->getContent () ?: $ this ->getRequestBodyFromParameterBag ($ request ->request );
31+
2932 $ process = ProcessBuilder::create ()
3033 ->add ('php-cgi ' )
3134 ->add ('-d expose_php=Off ' )
3235 ->add ('-d cgi.force_redirect=Off ' )
3336 ->add ($ filename )
34- ->setInput ($ request -> getContent () )
37+ ->setInput ($ requestBody )
3538 ->setEnv ('SCRIPT_FILENAME ' , $ filename )
3639 ->setEnv ('SCRIPT_NAME ' , $ this ->rootDir .'/ ' .$ filename )
3740 ->setEnv ('PATH_INFO ' , $ request ->getPathInfo ())
3841 ->setEnv ('QUERY_STRING ' , $ request ->getQueryString ())
3942 ->setEnv ('REQUEST_URI ' , $ request ->getRequestUri ())
4043 ->setEnv ('REQUEST_METHOD ' , $ request ->getMethod ())
44+ ->setEnv ('CONTENT_LENGTH ' , strlen ($ requestBody ))
45+ ->setEnv ('CONTENT_TYPE ' , $ request ->headers ->get ('Content-Type ' ))
4146 ->setWorkingDirectory ($ this ->rootDir )
4247 ->getProcess ();
4348
@@ -52,7 +57,7 @@ public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQ
5257 return new Response ($ body , $ status , $ headers );
5358 }
5459
55- public function getStatusCode (array $ headers )
60+ private function getStatusCode (array $ headers )
5661 {
5762 if (isset ($ headers ['Status ' ])) {
5863 list ($ code ) = explode (' ' , $ headers ['Status ' ]);
@@ -62,7 +67,7 @@ public function getStatusCode(array $headers)
6267 return 200 ;
6368 }
6469
65- public function getHeaderMap (array $ headerList )
70+ private function getHeaderMap (array $ headerList )
6671 {
6772 $ headerMap = array ();
6873 foreach ($ headerList as $ item ) {
@@ -71,4 +76,9 @@ public function getHeaderMap(array $headerList)
7176 }
7277 return $ headerMap ;
7378 }
79+
80+ private function getRequestBodyFromParameterBag (ParameterBag $ bag )
81+ {
82+ return http_build_query ($ bag ->all ());
83+ }
7484}
0 commit comments