diff --git a/htdocs/admin/system/phpinfo.php b/htdocs/admin/system/phpinfo.php index 09da33c071e..776dfc2695f 100644 --- a/htdocs/admin/system/phpinfo.php +++ b/htdocs/admin/system/phpinfo.php @@ -2,7 +2,8 @@ /* Copyright (C) 2001-2002 Rodolphe Quiedeville * Copyright (C) 2004-2012 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin - * Copyright (C) 2016 Juanjo Menent + * Copyright (C) 2016 Juanjo Menent + * Copyright (C) 2020 Tobias Sekan * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -68,9 +69,9 @@ if ($maxphp > 0 && $maxphp2 > 0 && $maxphp > $maxphp2) print '
'; } + print ''; print ''; -print "\n"; $ErrorPicturePath = "../../theme/eldy/img/error.png"; $WarningPicturePath = "../../theme/eldy/img/warning.png"; @@ -79,31 +80,32 @@ $OkayPicturePath = "../../theme/eldy/img/tick.png"; print ''; print ''; @@ -111,35 +113,11 @@ print ''; -print ''; -print ''; @@ -147,40 +125,78 @@ print ''; -print '
'.$langs->trans("Parameter").''.$langs->trans("Value").'
'.$langs->trans("Version").''; $arrayphpminversionerror = array(5,5,0); -$arrayphpminversionwarning = array(5,5,0); +$arrayphpminversionwarning = array(5,6,0); + if (versioncompare(versionphparray(), $arrayphpminversionerror) < 0) { - print 'Error '.$langs->trans("ErrorPHPVersionTooLow", versiontostring($arrayphpminversionerror)); + print 'Error '.$langs->trans("ErrorPHPVersionTooLow", versiontostring($arrayphpminversionerror)); } elseif (versioncompare(versionphparray(), $arrayphpminversionwarning) < 0) { - print 'Warning '.$langs->trans("ErrorPHPVersionTooLow", versiontostring($arrayphpminversionwarning)); + print 'Warning '.$langs->trans("ErrorPHPVersionTooLow", versiontostring($arrayphpminversionwarning)); } else { - print 'Ok '.versiontostring(versionphparray()); + print 'Ok '.versiontostring(versionphparray()); } print '
GET and POST support'; -if (! isset($_GET["testget"]) && ! isset($_POST["testpost"]) && ! isset($_GET["mainmenu"])) +if (! isset($_GET["testget"]) && ! isset($_POST["testpost"])) { - print 'Warning '.$langs->trans("PHPSupportPOSTGETKo"); - print ' ('.$langs->trans("Recheck").')'; + print 'Warning '.$langs->trans("PHPSupportPOSTGETKo"); + print ' ('.$langs->trans("Recheck").')'; } else { - print 'Ok '.$langs->trans("PHPSupportPOSTGETOk"); + print 'Ok '.$langs->trans("PHPSupportPOSTGETOk"); } print '
Sessions support'; if (! function_exists("session_id")) { - print 'Error '.$langs->trans("ErrorPHPDoesNotSupportSessions"); + print 'Error '.$langs->trans("ErrorPHPDoesNotSupportSessions"); } else { - print 'Ok '.$langs->trans("PHPSupportSessions"); -} - -print '
GD support'; - -if (! function_exists("imagecreate")) -{ - print 'Warning '.$langs->trans("ErrorPHPDoesNotSupportGD"); -} -else -{ - print 'Ok '.$langs->trans("PHPSupportGD"); -} - -print '
Curl support'; - -if (! function_exists("curl_init")) -{ - print 'Warning '.$langs->trans("ErrorPHPDoesNotSupportCurl"); -} -else -{ - print 'Ok '.$langs->trans("PHPSupportCurl"); + print 'Ok '.$langs->trans("PHPSupportSessions"); } print '
UTF-8 support'; if (! function_exists("utf8_encode")) { - print 'Warning '.$langs->trans("ErrorPHPDoesNotSupportUTF8"); + print 'Warning '.$langs->trans("ErrorPHPDoesNotSupportUTF8"); } else { - print 'Ok '.$langs->trans("PHPSupportUTF8"); + print 'Ok '.$langs->trans("PHPSupportUTF8"); } print '
Intl support'; +print '
'; + +print '
'; + +$activatedExtensions = array_map('strtolower', getActivatedExtensions()); +$loadedExtensions = array_map('strtolower', get_loaded_extensions(false)); + +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; + +$functions = ["imagecreate"]; +$name = "GD"; + +print ""; +print ""; +print getTableColumn($name, $activatedExtensions); +print getTableColumn($name, $loadedExtensions); +print getTableColumnFunction($functions); +print getResultColumn($name, $activatedExtensions, $loadedExtensions, $functions); +print ""; + +$functions = ["curl_init"]; +$name = "Curl"; + +print ""; +print ""; +print getTableColumn($name, $activatedExtensions); +print getTableColumn($name, $loadedExtensions); +print getTableColumnFunction($functions); +print getResultColumn($name, $activatedExtensions, $loadedExtensions, $functions); +print ""; if (empty($_SERVER["SERVER_ADMIN"]) || $_SERVER["SERVER_ADMIN"] != 'doliwamp@localhost') { - if (! function_exists("locale_get_primary_language") || ! function_exists("locale_get_region")) - { - print 'Warning '.$langs->trans("ErrorPHPDoesNotSupportIntl"); - } - else - { - print 'Ok '.$langs->trans("PHPSupportIntl"); - } + $functions = ["locale_get_primary_language", "locale_get_region"]; + $name = "Intl"; + + print ""; + print ""; + print getTableColumn($name, $activatedExtensions); + print getTableColumn($name, $loadedExtensions); + print getTableColumnFunction($functions); + print getResultColumn($name, $activatedExtensions, $loadedExtensions, $functions); + + print ""; } -print '"; +print ""; +print getTableColumn($name, $activatedExtensions); +print getTableColumn($name, $loadedExtensions); +print getTableColumnFunction($functions); +print getResultColumn($name, $activatedExtensions, $loadedExtensions, $functions); +print ""; -print ''; print '
'.$langs->trans("Extension").''.$langs->trans("Activated").''.$langs->trans("Loaded").''.$langs->trans("FunctionTest").''.$langs->trans("Result").'
".$name."
".$name."
".$name."
Zip support'; +$functions = array(); +$name = "xDebug"; -if (!class_exists('ZipArchive')) -{ - print 'Warning '.$langs->trans("ErrorPHPDoesNotSupport", "Zip"); -} -else -{ - print 'Ok '.$langs->trans("PHPSupport", "Zip"); -} +print "
".$name."
'; print '
'; @@ -189,8 +205,8 @@ print '
'; $phparray=phpinfo_array(); foreach($phparray as $key => $value) { - print '
'; - print ''; + print '
'; + print '
'; print ''; //print ''; print ''; @@ -240,3 +256,169 @@ foreach($phparray as $key => $value) // End of page llxFooter(); $db->close(); + +/** + * Return all list with all activated, but possible not loaded PHP extensions + * + * @return array + */ +function getActivatedExtensions() +{ + $file = getConfigFilePath(); + $handle = fopen(GetConfigFilePath(), "r"); + $content = fread($handle, filesize($file)); + + fclose($handle); + + $configLines = explode("\r", $content); + + $extensions = array(); + $lastLine = ""; + + foreach($configLines as $line) + { + $line = trim($line); + + // ignore comment lines + if(substr($line, 0, 1) === ";") + { + continue; + } + + // extension + if(substr($line, 0, 9) === "extension" && substr($line, 0, 10) !== "extension_") + { + $value = trim(end(explode("=", $line))); + + $extensions[] = $value === "gd2" ? "gd" : $value; + } + + // zend_extension + if(substr($line, 0, 14) === "zend_extension") + { + $extensions[] = str_replace("[", "", str_replace("]", "", $lastLine)); + } + + $lastLine = $line; + } + + return array_unique($extensions); +} + +/** + * Return the path to the current used php config file + * + * @return string + */ +function getConfigFilePath() +{ + $phparray = phpinfo_array(); + + foreach($phparray as $value) + { + foreach($value as $keyparam => $keyvalue) + { + if(strtolower($keyparam) !== "loaded configuration file") + { + continue; + } + + return $keyvalue; + } + } + + return ""; +} + +/** + * Return a table column with a indicator (okay or warning), based on the given name and list + * + * @param string $name The name to check inside the given list + * @param array $list A list that should contains the given name + * + * @return string + */ +function getTableColumn($name, array $list) +{ + $name = strtolower($name); + $html = ""; + + return $html; +} + +/** + * Return a table column with a indicator (okay or warning), based on the given functions to check + * + * @param array $functions A list with functions to check + * + * @return string + */ +function getTableColumnFunction(array $functions) +{ + if(count($functions) < 1) + { + return ""; + } + + $result = true; + $html = ""; + + return $html; +} + +/** + * Return a result column with a translated result text + * + * @param string $name The name of the PHP extension + * @param array $activated A list with all activated PHP extensions + * @param array $loaded A list with all loaded PHP extensions + * @param array $functions A list with all PHP functions to check + * + * @return array + */ +function getResultColumn($name, array $activated, array $loaded, array $functions) +{ + global $langs; + + $result = true; + $result = $result && in_array(strtolower($name), $activated); + $result = $result && in_array(strtolower($name), $loaded); + + foreach($functions as $function) + { + $result = $result && function_exists($function); + } + + $html = ""; + + return $html; +}
'.$langs->trans("Parameter").''.$key.'"; + + if(in_array($name, $list)) + { + $html .= 'Ok'; + } + else + { + $html .= 'Warning'; + } + + $html .= "-"; + + foreach($functions as $function) + { + $result = $result && function_exists($function); + } + + if($result) + { + $html .= 'Ok'; + } + else + { + $html .= 'Warning'; + } + + $html .= ""; + $html .= $result ? $langs->trans("PHPSupport".$name) : $langs->trans("ErrorPHPDoesNotSupport".$name); + $html .= "