Adding a "short_open_tag" configuration test.
[squirrelmail.git] / src / configtest.php
index 703645f6c955033567a95bd0e6a755e0b97e6ad0..431904bc072f64324f0f8d2875ec338dcca6ceb4 100644 (file)
@@ -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)<br />\n";
 
+echo $IND . 'display_errors: ' . ini_get('display_errors') . "<br />\n";
+
+echo $IND . 'error_reporting: ' . ini_get('error_reporting') . "<br />\n";
+
+$safe_mode = ini_get('safe_mode');
+if ($safe_mode) {
+    echo $IND . 'safe_mode: ' . $safe_mode;
+    if (empty($prefs_dsn) || empty($addrbook_dsn))
+        echo ' (<font color="red">double check data and attachment directory ownership, etc!</font>)';
+    if (!empty($addrbook_dsn) || !empty($prefs_dsn) || !empty($addrbook_global_dsn))
+        echo ' (<font color="red">does PHP have access to database interface?</font>)';
+    echo "<br />\n";
+    $safe_mode_exec_dir = ini_get('safe_mode_exec_dir');
+    echo $IND . 'safe_mode_exec_dir: ' . $safe_mode_exec_dir . "<br />\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
@@ -288,6 +307,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 '
+        . '(<tt>short_open_tag=off</tt>). 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 +325,7 @@ echo "Checking paths...<br />\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 .'<font color="red"><b>ERROR:</b></font> ' . $data_dir_error;
     } else {
@@ -304,7 +334,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 . '<font color="red"><b>ERROR:</b></font> ' . $data_dir_error;
     } else {
@@ -313,7 +343,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 . '<font color="red"><b>ERROR:</b></font> ' . $data_dir_error;
     } else {
@@ -408,15 +438,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...<br />\n";
     foreach ($plugins as $name) {
         $plugin_version = get_plugin_version($name);
-        echo $IND . $IND . $name . ' ' . (empty($plugin_version) ? '??' : $plugin_version) . "<br />\n";
+        $english_name = get_plugin_requirement($name, 'english_name');
+        echo $IND . $IND . (empty($english_name) ? $name . ' ' : $english_name . ' (' . $name . ') ') . (empty($plugin_version) ? '??' : $plugin_version) . "<br />\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 +464,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 +585,7 @@ if($useSendmail) {
                     break;
                 }
             } else {
-                // 
+                //
                 $ehlo_error = true;
                 $ehlo[]=$line;
                 break;
@@ -855,7 +886,7 @@ if($addrbook_dsn || $prefs_dsn || $addrbook_global_dsn) {
     } else {
         $db_error='Required PHP PEAR DB support is not available.'
             .' Is PEAR installed and is the include path set correctly to find <tt>DB.php</tt>?'
-            .' The include path is now:<tt>' . ini_get('include_path') . '</tt>.';
+            .' The include path is now: "<tt>' . ini_get('include_path') . '</tt>".';
         do_err($db_error);
     }
 } else {
@@ -920,4 +951,3 @@ if ($warnings) {
 EOF;
     echo $footer;
 }
-?>