X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fconfigtest.php;h=e5d11de34bf2b3789675aa1086c7fe191fe28623;hb=8a7ccd82d976b4a709e284887925d912872be13a;hp=5e5b1d5ab1209e6ce84870937a9a1b31f1a36a99;hpb=e50f5ac2682d655013d18d97f9a2aa30b7ed9485;p=squirrelmail.git diff --git a/src/configtest.php b/src/configtest.php index 5e5b1d5a..e5d11de3 100644 --- a/src/configtest.php +++ b/src/configtest.php @@ -34,6 +34,9 @@ ob_implicit_flush(); /** @ignore */ define('SM_PATH', '../'); +/* set default value in order to block remote access to script */ +$allow_remote_configtest=false; + /* * Load config before output begins. functions/strings.php depends on * functions/globals.php. functions/global.php needs to be run before @@ -58,7 +61,6 @@ in the config/ directory first before you run this script.

\n\n" . @@ -96,30 +105,66 @@ if(count($diff)) { echo $IND . "PHP extensions OK.
\n"; +/* dangerous php settings */ +/** + * mbstring.func_overload allows to replace original string and regexp functions + * with their equivalents from php mbstring extension. It causes problems when + * scripts analyze 8bit strings byte after byte or use 8bit strings in regexp tests. + * Setting can be controlled in php.ini (php 4.2.0), webserver config (php 4.2.0) + * and .htaccess files (php 4.3.5). + */ +if (function_exists('mb_internal_encoding') && + check_php_version(4,2,0) && + (int)ini_get('mbstring.func_overload')!=0) { + $mb_error='You have enabled mbstring overloading.' + .' It can cause problems with SquirrelMail scripts that rely on single byte string functions.'; + do_err($mb_error); +} /* checking paths */ echo "Checking paths...
\n"; if(!file_exists($data_dir)) { - do_err("Data dir ($data_dir) does not exist!"); -} -if(!is_dir($data_dir)) { - do_err("Data dir ($data_dir) is not a directory!"); + // data_dir is not that important in db_setups. + if (isset($prefs_dsn) && ! empty($prefs_dsn)) { + $data_dir_error = "Data dir ($data_dir) does not exist!\n"; + echo $IND .'ERROR: ' . $data_dir_error; + } else { + do_err("Data dir ($data_dir) does not exist!"); + } } -if(!is_readable($data_dir)) { - do_err("I cannot read from data dir ($data_dir)!"); +// don't check if errors +if(!isset($data_dir_error) && !is_dir($data_dir)) { + if (isset($prefs_dsn) && ! empty($prefs_dsn)) { + $data_dir_error = "Data dir ($data_dir) is not a directory!\n"; + echo $IND . 'ERROR: ' . $data_dir_error; + } else { + do_err("Data dir ($data_dir) is not a directory!"); + } } -if(!is_writable($data_dir)) { - do_err("I cannot write to data dir ($data_dir)!"); +// datadir should be executable - but no clean way to test on that +if(!isset($data_dir_error) && !is_writable($data_dir)) { + if (isset($prefs_dsn) && ! empty($prefs_dsn)) { + $data_dir_error = "Data dir ($data_dir) is not writable!\n"; + echo $IND . 'ERROR: ' . $data_dir_error; + } else { + do_err("Data dir ($data_dir) is not writable!"); + } } -// todo_ornot: actually write something and read it back. -echo $IND . "Data dir OK.
\n"; - +if (isset($data_dir_error)) { + echo " Some plugins might need access to data directory.
\n"; +} else { + // todo_ornot: actually write something and read it back. + echo $IND . "Data dir OK.
\n"; +} if($data_dir == $attachment_dir) { echo $IND . "Attachment dir is the same as data dir.
\n"; + if (isset($data_dir_error)) { + do_err($data_dir_error); + } } else { if(!file_exists($attachment_dir)) { do_err("Attachment dir ($attachment_dir) does not exist!"); @@ -157,6 +202,24 @@ foreach($theme as $thm) { echo $IND . "Themes OK.
\n"; +if ( $squirrelmail_default_language != 'en_US' ) { + $loc_path = SM_PATH .'locale/'.$squirrelmail_default_language.'/LC_MESSAGES/squirrelmail.mo'; + if( ! file_exists( $loc_path ) ) { + do_err('You have set ' . $squirrelmail_default_language . + ' as your default language, but I cannot find this translation (should be '. + 'in ' . $loc_path . '). Please note that you have to download translations '. + 'separately from the main SquirrelMail package.', FALSE); + } elseif ( ! is_readable( $loc_path ) ) { + do_err('You have set ' . $squirrelmail_default_language . + ' as your default language, but I cannot read this translation (file '. + 'in ' . $loc_path . ' unreadable).', FALSE); + } else { + echo $IND . "Default language OK.
\n"; + } +} else { + echo $IND . "Default language OK.
\n"; +} + echo $IND . "Base URL detected as: " . htmlspecialchars(get_location()) . "
\n"; @@ -269,15 +332,20 @@ fclose($stream); 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"; + echo 'Gettext functions are available.' + .' On some systems you must have appropriate system locales compiled.' + ."
\n"; } else { - echo "Gettext functions are unavailable. SquirrelMail will use slower internal gettext functions.
\n"; + echo 'Gettext functions are unavailable.' + .' SquirrelMail will use slower internal gettext functions.' + ."
\n"; } echo "$IND mbstring - "; if (function_exists('mb_detect_encoding')) { echo "Mbstring functions are available.
\n"; } else { - echo "Mbstring functions are unavailable. Japanese translation won't work.
\n"; + echo 'Mbstring functions are unavailable.' + ." Japanese translation won't work.
\n"; } echo "$IND recode - "; if (function_exists('recode')) { @@ -325,7 +393,7 @@ if($addrbook_dsn || $prefs_dsn || $addrbook_global_dsn) { 'mysqli' => 'mysqli_connect', 'oci8' => 'ocilogon', 'odbc' => 'odbc_connect', - 'pgsql' => 'pgsql_connect', + 'pgsql' => 'pg_connect', 'sqlite' => 'sqlite_open', 'sybase' => 'sybase_connect' ); @@ -361,9 +429,10 @@ if($addrbook_dsn || $prefs_dsn || $addrbook_global_dsn) { } } } else { - do_err('Required PHP PEAR DB support is not available. Is PEAR installed and is the - include path set correctly to find DB.php? The include path is now: - "' . ini_get('include_path') . '".'); + $db_error='Required PHP PEAR DB support is not available.' + .' Is PEAR installed and is the include path set correctly to find DB.php?' + .' The include path is now:' . ini_get('include_path') . '.'; + do_err($db_error); } } else { echo $IND."not using database functionality.
\n"; @@ -374,13 +443,13 @@ echo "Checking LDAP functions...
\n"; if( empty($ldap_server) ) { echo $IND."not using LDAP functionality.
\n"; } else { - if ( !function_exists(ldap_connect) ) { + if ( !function_exists('ldap_connect') ) { do_err('Required LDAP support is not available.'); } else { echo "$IND LDAP support present.
\n"; foreach ( $ldap_server as $param ) { - $linkid = ldap_connect($param['host'], (empty($param['port']) ? 389 : $param['port']) ); + $linkid = @ldap_connect($param['host'], (empty($param['port']) ? 389 : $param['port']) ); if ( $linkid ) { echo "$IND LDAP connect to ".$param['host']." successful: ".$linkid."
\n"; @@ -391,9 +460,9 @@ if( empty($ldap_server) ) { } if ( empty($param['binddn']) ) { - $bind = ldap_bind($linkid); + $bind = @ldap_bind($linkid); } else { - $bind = ldap_bind($param['binddn'], $param['bindpw']); + $bind = @ldap_bind($param['binddn'], $param['bindpw']); } if ( $bind ) { @@ -402,7 +471,7 @@ if( empty($ldap_server) ) { do_err('Unable to Bind to LDAP Server'); } - ldap_close($linkid); + @ldap_close($linkid); } else { do_err('Connection to LDAP failed'); } @@ -419,4 +488,4 @@ if( empty($ldap_server) ) { \ No newline at end of file +?>
SquirrelMail version:" . $version . "