From 2b71fe65e098c09d49d05912c476fbec9d62588d Mon Sep 17 00:00:00 2001 From: Yannick Warnier Date: Fri, 12 Aug 2016 21:07:57 -0500 Subject: [PATCH] Add recommendation for OPcache and APCu in Chamilo installer and system status page --- main/inc/lib/diagnoser.lib.php | 10 +++++++ main/install/install.lib.php | 54 ++++++++++++++++++++++++---------- 2 files changed, 48 insertions(+), 16 deletions(-) diff --git a/main/inc/lib/diagnoser.lib.php b/main/inc/lib/diagnoser.lib.php index 89a3d91a7f..5693e50ed1 100755 --- a/main/inc/lib/diagnoser.lib.php +++ b/main/inc/lib/diagnoser.lib.php @@ -326,6 +326,16 @@ class Diagnoser 'expected' => 2, 'comment' => get_lang('ExtensionShouldBeLoaded'), ), + 'Zend OPcache' => array( + 'link' => 'http://www.php.net/opcache', + 'expected' => 2, + 'comment' => get_lang('ExtensionShouldBeLoaded'), + ), + 'apcu' => array( + 'link' => 'http://www.php.net/apcu', + 'expected' => 2, + 'comment' => get_lang('ExtensionShouldBeLoaded'), + ), ); foreach ($extensions as $extension => $data) { diff --git a/main/install/install.lib.php b/main/install/install.lib.php index ff18736cdf..b3fbe1a408 100755 --- a/main/install/install.lib.php +++ b/main/install/install.lib.php @@ -55,15 +55,29 @@ function isAlreadyInstalledSystem() * @param string $returnSuccess Text to show when extension is available (defaults to 'Yes') * @param string $returnFailure Text to show when extension is available (defaults to 'No') * @param boolean $optional Whether this extension is optional (then show unavailable text in orange rather than red) + * @param string $enabledTerm If this string is not null, then use to check if the corresponding parameter is = 1. If not, mention it's present but not enabled. For example, for opcache, this should be 'opcache.enable' * @return string HTML string reporting the status of this extension. Language-aware. * @author Christophe Gesch?? * @author Patrick Cool , Ghent University * @author Yannick Warnier */ -function checkExtension($extensionName, $returnSuccess = 'Yes', $returnFailure = 'No', $optional = false) +function checkExtension($extensionName, $returnSuccess = 'Yes', $returnFailure = 'No', $optional = false, $enabledTerm = '') { if (extension_loaded($extensionName)) { - return Display::label($returnSuccess, 'success'); + if (!empty($enabledTerm)) { + $isEnabled = ini_get($enabledTerm); + if ($isEnabled == '1') { + return Display::label($returnSuccess, 'success'); + } else { + if ($optional) { + return Display::label(get_lang('ExtensionInstalledButNotEnabled'), 'warning'); + } else { + return Display::label(get_lang('ExtensionInstalledButNotEnabled'), 'important'); + } + } + } else { + return Display::label($returnSuccess, 'success'); + } } else { if ($optional) { return Display::label($returnFailure, 'warning'); @@ -699,60 +713,68 @@ function display_requirements( echo ' - Session '.get_lang('support').' + Session '.get_lang('Support').' '.checkExtension('session', get_lang('Yes'), get_lang('ExtensionSessionsNotAvailable')).' - pdo_mysql '.get_lang('support').' + pdo_mysql '.get_lang('Support').' '.checkExtension('pdo_mysql', get_lang('Yes'), get_lang('ExtensionMySQLNotAvailable')).' - Zip '.get_lang('support').' + Zip '.get_lang('Support').' '.checkExtension('zip', get_lang('Yes'), get_lang('ExtensionNotAvailable')).' - Zlib '.get_lang('support').' + Zlib '.get_lang('Support').' '.checkExtension('zlib', get_lang('Yes'), get_lang('ExtensionZlibNotAvailable')).' - Perl-compatible regular expressions '.get_lang('support').' + Perl-compatible regular expressions '.get_lang('Support').' '.checkExtension('pcre', get_lang('Yes'), get_lang('ExtensionPCRENotAvailable')).' - XML '.get_lang('support').' + XML '.get_lang('Support').' '.checkExtension('xml', get_lang('Yes'), get_lang('No')).' - Internationalization '.get_lang('support').' + Internationalization '.get_lang('Support').' '.checkExtension('intl', get_lang('Yes'), get_lang('No')).' - JSON '.get_lang('support').' + JSON '.get_lang('Support').' '.checkExtension('json', get_lang('Yes'), get_lang('No')).' - GD '.get_lang('support').' + GD '.get_lang('Support').' '.checkExtension('gd', get_lang('Yes'), get_lang('ExtensionGDNotAvailable')).' - cURL'.get_lang('support').' + cURL'.get_lang('Support').' '.checkExtension('curl', get_lang('Yes'), get_lang('No')).' - Multibyte string '.get_lang('support').' ('.get_lang('Optional').') + Multibyte string '.get_lang('Support').' ('.get_lang('Optional').') '.checkExtension('mbstring', get_lang('Yes'), get_lang('ExtensionMBStringNotAvailable'), true).' - Iconv '.get_lang('support').' ('.get_lang('Optional').') + Zend OpCache '.get_lang('Support').' ('.get_lang('Optional').') + '.checkExtension('Zend OPcache', get_lang('Yes'), get_lang('No'), true, 'opcache.enable').' + + + APCu '.get_lang('Support').' ('.get_lang('Optional').') + '.checkExtension('apcu', get_lang('Yes'), get_lang('No'), true, 'apc.enabled').' + + + Iconv '.get_lang('Support').' ('.get_lang('Optional').') '.checkExtension('iconv', get_lang('Yes'), get_lang('No'), true).' - LDAP '.get_lang('support').' ('.get_lang('Optional').') + LDAP '.get_lang('Support').' ('.get_lang('Optional').') '.checkExtension('ldap', get_lang('Yes'), get_lang('ExtensionLDAPNotAvailable'), true).' - Xapian '.get_lang('support').' ('.get_lang('Optional').') + Xapian '.get_lang('Support').' ('.get_lang('Optional').') '.checkExtension('xapian', get_lang('Yes'), get_lang('No'), true).' ';