@@ -15,35 +15,52 @@ class NginxConfigurationCollector extends BasicCollector
1515
1616 public function collect (): array
1717 {
18+ $ nginxInfo = $ this ->getNginxInfo ();
19+
1820 return [
19- 'modules ' => $ this ->getActiveNginxModules (),
21+ 'version ' => $ nginxInfo ['version ' ],
22+ 'modules ' => $ nginxInfo ['modules ' ],
2023 'nonLinkedSitesEnabled ' => $ this ->getRealConfigFilesWithServerNames ()
2124 ];
2225 }
2326
24- private function getActiveNginxModules (): array
27+ private function getNginxInfo (): array
2528 {
2629 $ runner = Runner::getInstance ();
2730 $ result = $ runner ->run ('nginx -V 2>&1 ' );
2831
2932 if ($ result ->getExitCode () !== Command::SUCCESS ) {
30- return [];
33+ return [
34+ 'version ' => null ,
35+ 'modules ' => [],
36+ ];
3137 }
3238
3339 $ output = Runner::outputToArray ($ result ->getOutput ());
3440
41+ $ version = null ;
3542 $ modules = [];
3643
3744 foreach ($ output as $ line ) {
45+ if (str_starts_with ($ line , 'nginx version: ' )) {
46+ if (preg_match ('/nginx\/([^\s]+)/ ' , $ line , $ matches )) {
47+ $ version = $ matches [1 ];
48+ }
49+ }
50+
3851 if (preg_match_all ('/--with-(\S+)/ ' , $ line , $ matches )) {
3952 foreach ($ matches [1 ] as $ module ) {
40- if (str_contains ($ module , '= ' )) continue ;
41- $ modules [] = $ module ;
53+ if (!str_contains ($ module , '= ' )) {
54+ $ modules [] = $ module ;
55+ }
4256 }
4357 }
4458 }
4559
46- return $ modules ;
60+ return [
61+ 'version ' => $ version ,
62+ 'modules ' => $ modules ,
63+ ];
4764 }
4865
4966 public function isNginxInstalled (): bool
0 commit comments