From: kink Date: Sat, 3 Apr 2004 15:19:53 +0000 (+0000) Subject: Only check for DB if using that; explicitly check the used DBMS-functions; X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=commitdiff_plain;h=d18703d31a97c74292a7cd039eaae454cab87bae Only check for DB if using that; explicitly check the used DBMS-functions; check whether we can connect succesfully. git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@7022 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- diff --git a/src/configtest.php b/src/configtest.php index bf5887c1..964da918 100644 --- a/src/configtest.php +++ b/src/configtest.php @@ -14,7 +14,8 @@ ************************************************************/ function do_err($str, $exit = TRUE) { - echo '

ERROR: ' .$str. "

\n"; + global $IND; + echo '

'.$IND.'ERROR: ' .$str. "

\n"; if($exit) { echo ''; exit; @@ -46,7 +47,7 @@ if (file_exists(SM_PATH . 'config/config.php')) {

This script will try to check some aspects of your SquirrelMail configuration and point you to errors whereever it can find them. You need to go run conf.pl -in this directory first before you run this script.

+in the config/ directory first before you run this script.

'.trim($imapline).")
\n"; -echo "Checking i18n settings:
\n"; +echo "Checking internationalization (i18n) settings:
\n"; echo "$IND gettext - "; if (function_exists('gettext')) { echo "Gettext functions are available. You must have appropriate system locales compiled.
\n"; @@ -268,42 +269,58 @@ if ( (!ini_get('safe_mode')) || echo "Webmail users can't change their time zone settings.
\n"; } + // Pear DB tests -echo "Checking PHP Pear DB support:
\n"; -@include_once('DB.php'); -if (class_exists('DB')) { - echo "$IND PHP Pear DB support is present.
\n"; - $db_functions=array( - 'dbase' => 'dbase_open', - 'fbsql' => 'fbsql_connect', - 'interbase' => 'ibase_connect', - 'informix' => 'ifx_connect', - 'msql' => 'msql_connect', - 'mssql' => 'mssql_connect', - 'mysql' => 'mysql_connect', - 'mysqli' => 'mysqli_connect', - 'oci8' => 'ocilogon', - 'odbc' => 'odbc_connect', - 'pgsql' => 'pgsql_connect', - 'sqlite' => 'sqlite_open', - 'sybase' => 'sybase_connect' - ); - $pear_db_support=""; - foreach ($db_functions as $db => $function) - if (function_exists($function)) $pear_db_support .= $db . " "; - if ($pear_db_support!="") { - echo "$IND Supported backends: $pear_db_support
\n"; - } else { - echo "$IND Pear DB support is present, but none of database backends is supported
\n"; - } +echo "Checking database functions...
\n"; +if($addrbook_dsn || $prefs_dsn || $addrbook_global_dsn) { + @include_once('DB.php'); + if (class_exists('DB')) { + echo "$IND PHP Pear DB support is present.
\n"; + $db_functions=array( + 'dbase' => 'dbase_open', + 'fbsql' => 'fbsql_connect', + 'interbase' => 'ibase_connect', + 'informix' => 'ifx_connect', + 'msql' => 'msql_connect', + 'mssql' => 'mssql_connect', + 'mysql' => 'mysql_connect', + 'mysqli' => 'mysqli_connect', + 'oci8' => 'ocilogon', + 'odbc' => 'odbc_connect', + 'pgsql' => 'pgsql_connect', + 'sqlite' => 'sqlite_open', + 'sybase' => 'sybase_connect' + ); + + $dsns = array(); + if($prefs_dsn) $dsns['preferences'] = $prefs_dsn; + if($addrbook_dsn) $dsns['addressbook'] = $addrbook_dsn; + if($addrbook_global_dsn) $dsns['global addressbook'] = $addrbook_global_dsn; + + foreach($dsns as $type => $dsn) { + $dbtype = array_shift(explode(':', $dsn)); + if(isset($db_functions[$dbtype]) && function_exists($db_functions[$dbtype])) { + echo "$IND$dbtype database support present.
\n"; + + // now, test this interface: + + $dbh = DB::connect($dsn, true); + if (DB::isError($dbh)) { + do_err('Database error: '. DB::errorMessage($dbh) . ' in ' .$type .' DSN.'); + } + $dbh->disconnect(); + echo "$IND$type database connect successful.
\n"; + + } else { + do_err($db.' database support not present!'); + } + } + } else { + do_err('Required PHP Pear DB support is not available.');; + } } else { - echo "$IND PHP Pear DB support is not available.
\n"; + echo $IND."not using database functionality.
\n"; } - -// other possible checks: -// ? prefs/abook DSN -// ? actually start a session to see if it works -// ? ... ?>

Congratulations, your SquirrelMail setup looks fine to me!