X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fconfigtest.php;h=967ac11a05969ecd322c338da7370e744d5ebca7;hb=d1c87b1266294a58aac6e65d95c9ab34d1553de8;hp=703645f6c955033567a95bd0e6a755e0b97e6ad0;hpb=47fa8e9b48dcd34b60bd0af76eb57643aeeb2c0a;p=squirrelmail.git diff --git a/src/configtest.php b/src/configtest.php index 703645f6..967ac11a 100644 --- a/src/configtest.php +++ b/src/configtest.php @@ -15,6 +15,9 @@ * If it throws errors you need to adjust your config. * ************************************************************/ +/** This is the configtest page */ +define('PAGE_NAME', 'configtest'); + // This script could really use some restructuring as it has grown quite rapidly // but is not very 'clean'. Feel free to get some structure into this thing. @@ -193,9 +196,25 @@ if(!check_php_version(4,1,0)) { echo $IND . 'PHP version ' . PHP_VERSION . ' OK. (You have: ' . phpversion() . ". Minimum: 4.1.0)
\n"; +echo $IND . 'display_errors: ' . ini_get('display_errors') . "
\n"; + +echo $IND . 'error_reporting: ' . ini_get('error_reporting') . "
\n"; + +$safe_mode = ini_get('safe_mode'); +if ($safe_mode) { + echo $IND . 'safe_mode: ' . $safe_mode; + if (empty($prefs_dsn) || empty($addrbook_dsn)) + echo ' (double check data and attachment directory ownership, etc!)'; + if (!empty($addrbook_dsn) || !empty($prefs_dsn) || !empty($addrbook_global_dsn)) + echo ' (does PHP have access to database interface?)'; + echo "
\n"; + $safe_mode_exec_dir = ini_get('safe_mode_exec_dir'); + echo $IND . 'safe_mode_exec_dir: ' . $safe_mode_exec_dir . "
\n"; +} + /* register_globals check: test for boolean false and any string that is not equal to 'off' */ -if ((bool) ini_get('register_globals') && +if ((bool) ini_get('register_globals') && strtolower(ini_get('register_globals'))!='off') { do_err('You have register_globals turned on. This is not an error, but it CAN be a security hazard. Consider turning register_globals off.', false); } @@ -204,7 +223,7 @@ if ((bool) ini_get('register_globals') && /* variables_order check */ // FIXME(?): Hmm, how do we distinguish between when an ini setting is -// not available (ini_set() returns empty string) and when +// not available (ini_set() returns empty string) and when // the administrator set the value to an empty string? The // latter is sure to be highly rare, so for now, just assume // that empty value means the setting isn't even available @@ -228,7 +247,7 @@ else if (strpos($variables_order, 'G') === FALSE if (!check_php_version(5)) { // FIXME(?): Hmm, how do we distinguish between when an ini setting is - // not available (ini_set() returns empty string) and when + // not available (ini_set() returns empty string) and when // the administrator set the value to an empty string? The // latter is sure to be highly rare, so for now, just assume // that empty value means the setting isn't even available @@ -256,7 +275,14 @@ if(count($diff)) { do_err('Required PHP extensions missing: '.implode(', ',$diff) ); } -echo $IND . "PHP extensions OK.
\n"; +echo $IND . "PHP extensions OK. Dynamic loading is "; + +if (!(bool)ini_get('enable_dl') || (bool)ini_get('safe_mode')) { + echo "disabled.
\n"; +} else { + echo "enabled.
\n"; +} + /* dangerous php settings */ /** @@ -288,6 +314,17 @@ if ( get_magic_quotes_runtime() || get_magic_quotes_gpc() || do_err($magic_quotes_warning,false); } +if (ini_get('short_open_tag') == 0) { + $short_open_tag_warning = 'You have configured PHP not to allow short tags ' + . '(short_open_tag=off). This shouldn\'t be a problem with ' + . 'SquirrelMail or any plugin coded coded according to the ' + . 'SquirrelMail Coding Guidelines, but if you experience problems with ' + . 'PHP code being displayed in some of the pages and changing setting ' + . 'to "on" solves the problem, please file a bug report against the ' + . 'failing plugin. The correct contact information is most likely ' + . 'to be found in the plugin documentation.'; + do_err($short_open_tag_warning, false); +} /* checking paths */ @@ -295,7 +332,7 @@ echo "Checking paths...
\n"; if(!file_exists($data_dir)) { // data_dir is not that important in db_setups. - if (isset($prefs_dsn) && ! empty($prefs_dsn)) { + if (!empty($prefs_dsn)) { $data_dir_error = "Data dir ($data_dir) does not exist!\n"; echo $IND .'ERROR: ' . $data_dir_error; } else { @@ -304,7 +341,7 @@ if(!file_exists($data_dir)) { } // don't check if errors if(!isset($data_dir_error) && !is_dir($data_dir)) { - if (isset($prefs_dsn) && ! empty($prefs_dsn)) { + if (!empty($prefs_dsn)) { $data_dir_error = "Data dir ($data_dir) is not a directory!\n"; echo $IND . 'ERROR: ' . $data_dir_error; } else { @@ -313,7 +350,7 @@ if(!isset($data_dir_error) && !is_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)) { + if (!empty($prefs_dsn)) { $data_dir_error = "Data dir ($data_dir) is not writable!\n"; echo $IND . 'ERROR: ' . $data_dir_error; } else { @@ -408,15 +445,16 @@ if (isset($plugins[0])) { $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); } - /** + /** * Print plugin versions */ echo $IND . "Plugin versions...
\n"; foreach ($plugins as $name) { $plugin_version = get_plugin_version($name); - echo $IND . $IND . $name . ' ' . (empty($plugin_version) ? '??' : $plugin_version) . "
\n"; + $english_name = get_plugin_requirement($name, 'english_name'); + echo $IND . $IND . (empty($english_name) ? $name . ' ' : $english_name . ' (' . $name . ') ') . (empty($plugin_version) ? '??' : $plugin_version) . "
\n"; - // check if this plugin has any other plugin + // check if this plugin has any other plugin // dependencies and if they are satisfied // $failed_dependencies = check_plugin_dependencies($name); @@ -433,7 +471,7 @@ if (isset($plugins[0])) { } /** - * This hook was added in 1.5.2 and 1.4.10. Each plugins should print an error + * This hook was added in 1.5.2 and 1.4.10. Each plugins should print an error * message and return TRUE if there are any errors in its setup/configuration. */ $plugin_err = boolean_hook_function('configtest', $null, 1); @@ -554,7 +592,7 @@ if($useSendmail) { break; } } else { - // + // $ehlo_error = true; $ehlo[]=$line; break; @@ -835,27 +873,33 @@ if($addrbook_dsn || $prefs_dsn || $addrbook_global_dsn) { 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.
\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.
\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.
\n"; } } else { $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') . '.'; + .' The include path is now: "' . ini_get('include_path') . '".'; do_err($db_error); } } else { @@ -920,4 +964,3 @@ if ($warnings) { EOF; echo $footer; } -?>