do_err('Required PHP extensions missing: '.implode(', ',$diff) );
}
-echo $IND . "PHP extensions OK.<br />\n";
+echo $IND . "PHP extensions OK. Dynamic loading is ";
+
+if (!(bool)ini_get('enable_dl') || (bool)ini_get('safe_mode')) {
+ echo "disabled.<br />\n";
+} else {
+ echo "enabled.<br />\n";
+}
+
/* dangerous php settings */
/**
/**
* Do not use SquirrelMail with magic_quotes_* on.
*/
-if ( get_magic_quotes_runtime() || get_magic_quotes_gpc() ||
+if ( (function_exists('get_magic_quotes_runtime') && @get_magic_quotes_runtime()) ||
+ (function_exists('get_magic_quotes_gpc') && @get_magic_quotes_gpc()) ||
( (bool) ini_get('magic_quotes_sybase') && ini_get('magic_quotes_sybase') != 'off' )
) {
$magic_quotes_warning='You have enabled any one of <tt>magic_quotes_runtime</tt>, '
echo "Checking plugins...<br />\n";
/* check plugins and themes */
-//FIXME: check requirements given in plugin _info() function, such
-// as required PHP extensions, Pear packages, other plugins, SM version, etc
-// see development docs for list of returned info from that function
+//FIXME: check requirements given in plugin _info() function, such as required PHP extensions, Pear packages, other plugins, SM version, etc see development docs for list of returned info from that function
+//FIXME: update this list with most recent contents of the Obsolete category - I think it has changed recently
$bad_plugins = array(
'attachment_common', // Integrated into SquirrelMail 1.2 core
'auto_prune_sent', // Obsolete: See Proon Automatic Folder Pruning plugin
ob_end_clean();
// if plugins output more than newlines and spacing, stop script execution.
if (!empty($output)) {
+//FIXME: if the output buffer is checked INSIDE the foreach loop above, we can tell the user WHICH plugin has the problem - seems like a good idea
$plugin_load_error = 'Some output is produced when plugins are loaded. Usually this means there is an error in one of the plugin setup or configuration files. The output was: '.htmlspecialchars($output);
do_err($plugin_load_error);
}
foreach($dsns as $type => $dsn) {
$aDsn = explode(':', $dsn);
$dbtype = array_shift($aDsn);
+
if(isset($db_functions[$dbtype]) && function_exists($db_functions[$dbtype])) {
echo "$IND$dbtype database support present.<br />\n";
+ } elseif(!(bool)ini_get('enable_dl') || (bool)ini_get('safe_mode')) {
+ do_err($dbtype.' database support not present!');
+ } else {
+ // Non-fatal error
+ do_err($dbtype.' database support not present or not configured!
+ Trying to dynamically load '.$dbtype.' extension.
+ Please note that it is advisable to not rely on dynamic loading of extensions.', FALSE);
+ }
- // now, test this interface:
- $dbh = DB::connect($dsn, true);
- if (DB::isError($dbh)) {
- do_err('Database error: '. htmlspecialchars(DB::errorMessage($dbh)) .
- ' in ' .$type .' DSN.');
- }
- $dbh->disconnect();
- echo "$IND$type database connect successful.<br />\n";
+ // now, test this interface:
- } else {
- do_err($dbtype.' database support not present!');
+ $dbh = DB::connect($dsn, true);
+ if (DB::isError($dbh)) {
+ do_err('Database error: '. htmlspecialchars(DB::errorMessage($dbh)) .
+ ' in ' .$type .' DSN.');
}
+ $dbh->disconnect();
+ echo "$IND$type database connect successful.<br />\n";
}
} else {
$db_error='Required PHP PEAR DB support is not available.'