Added environment_check.php file.
authorNik Okuntseff <support@anuko.com>
Sun, 17 Jul 2016 21:35:15 +0000 (21:35 +0000)
committerNik Okuntseff <support@anuko.com>
Sun, 17 Jul 2016 21:35:15 +0000 (21:35 +0000)
It provides troubleshooting for basic config errors.

WEB-INF/templates/footer.tpl
environment_check.php [new file with mode: 0644]

index f9a7edd..9c9dc5f 100644 (file)
@@ -12,7 +12,7 @@
       <br>
       <table cellspacing="0" cellpadding="4" width="100%" border="0">
         <tr>
-          <td align="center">&nbsp;Anuko Time Tracker 1.9.25.3499 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
+          <td align="center">&nbsp;Anuko Time Tracker 1.9.25.3500 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
             <a href="https://www.anuko.com/lp/tt_4.htm" target="_blank">{$i18n.footer.credits}</a> |
             <a href="https://www.anuko.com/lp/tt_5.htm" target="_blank">{$i18n.footer.license}</a> |
             <a href="https://www.anuko.com/lp/tt_7.htm" target="_blank">{$i18n.footer.improve}</a>
diff --git a/environment_check.php b/environment_check.php
new file mode 100644 (file)
index 0000000..1333cc5
--- /dev/null
@@ -0,0 +1,114 @@
+<?php
+// +----------------------------------------------------------------------+
+// | Anuko Time Tracker
+// +----------------------------------------------------------------------+
+// | Copyright (c) Anuko International Ltd. (https://www.anuko.com)
+// +----------------------------------------------------------------------+
+// | LIBERAL FREEWARE LICENSE: This source code document may be used
+// | by anyone for any purpose, and freely redistributed alone or in
+// | combination with other software, provided that the license is obeyed.
+// |
+// | There are only two ways to violate the license:
+// |
+// | 1. To redistribute this code in source form, with the copyright
+// |    notice or license removed or altered. (Distributing in compiled
+// |    forms without embedded copyright notices is permitted).
+// |
+// | 2. To redistribute modified versions of this code in *any* form
+// |    that bears insufficient indications that the modifications are
+// |    not the work of the original author(s).
+// |
+// | This license applies to this document only, not any other software
+// | that it may be combined with.
+// |
+// +----------------------------------------------------------------------+
+// | Contributors:
+// | https://www.anuko.com/time_tracker/credits.htm
+// +----------------------------------------------------------------------+
+
+require_once('WEB-INF/config.php');
+require_once('WEB-INF/lib/common.lib.php');
+require_once('initialize.php');
+
+echo('<h2>Environment check</h2>');
+
+// Require the configuration file with application settings.
+if (file_exists(APP_DIR."/WEB-INF/config.php")) {
+  echo('WEB-INF/config.php file exists.<br>');
+} else {
+  echo('<font color="red">Error: WEB-INF/config.php file does not exist.</font><br>');
+}
+
+// Check whether DSN is defined.
+if (defined('DSN')) {
+  echo('DSN is defined as '.DSN.'<br>');
+} else {
+  echo('<font color="red">Error: DSN value is not defined. Check your config.php file.</font><br>');
+}
+
+// Depending on DSN, require either mysqli or mysql extensions.
+if (strrpos(DSN, 'mysqli://', -strlen(DSN)) !== FALSE) {
+  if (extension_loaded('mysqli')) {
+    echo('mysqli PHP extension is loaded.<br>');
+  } else {
+    echo('<font color="red">Error: mysqli PHP extension is required but is not loaded.</font><br>');
+  }
+}
+if (strrpos(DSN, 'mysql://', -strlen(DSN)) !== FALSE) {
+  if (extension_loaded('mysql')) {
+    echo('mysql PHP extension is loaded.<br>');
+  } else {
+    echo('<font color="red">Error: mysql PHP extension is required but is not loaded.</font><br>');
+  }
+}
+
+// Check mbstring extension.
+if (extension_loaded('mbstring')) {
+  echo('mbstring PHP extension is loaded.<br>');
+} else {
+  echo('<font color="red">Error: mbstring PHP extension is not loaded.</font><br>');
+}
+
+// Check gd extension.
+if (extension_loaded('gd')) {
+  echo('gd PHP extension is loaded.<br>');
+} else {
+  echo('<font color="red">Error: gd PHP extension is not loaded. It is required for charts plugin.</font><br>');
+}
+
+// Check ldap extension.
+if (AUTH_MODULE == 'ldap') {
+  if (extension_loaded('ldap_')) {
+    echo('ldap PHP extension is loaded.<br>');
+  } else {
+    echo('<font color="red">Error: ldap PHP extension is not loaded. It is required for LDAP authentication.</font><br>');
+  }
+}
+
+// Check database access.
+require_once('MDB2.php');
+$conn = MDB2::connect(DSN);
+if (!is_a($conn, 'MDB2_Error')) {
+  echo('Connection to database successful.<br>');
+} else {
+  die('<font color="red">Error: connection to database failed. '.$conn->getMessage().'</font><br>');
+}
+
+$conn->setOption('debug', true);
+$conn->setFetchMode(MDB2_FETCHMODE_ASSOC);
+
+$sql = "show tables";
+$res = $conn->query($sql);
+if (is_a($res, 'MDB2_Error')) {
+  die('<font color="red">Error: show tables returned an error. '.$res->getMessage().'</font><br>');
+}
+$tblCnt = 0;
+while ($val = $res->fetchRow()) {
+ $tblCnt++;
+}
+if ($tblCnt > 0) {
+  echo("There are $tblCnt tables in database.<br>");
+} else {
+  echo('<font color="red">Error: there are no tables in database. Use dbinstall.php.</font><br>');
+}
+$conn->disconnect();