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;
}
-?>