X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=include%2Fsanity_check.php;h=0477efd5077fb37d81ea5a7385fe1e061c0b0fe5;hb=6322ac79a020ab584d412d782d62b2ee77d7c6cf;hp=5c631574decf02b8b5f6444cb4d4ae1a578ac965;hpb=5b7bd238eeed1aa83fe47f715c79b16b42ab347f;p=tt-rss.git
diff --git a/include/sanity_check.php b/include/sanity_check.php
index 5c631574..0477efd5 100644
--- a/include/sanity_check.php
+++ b/include/sanity_check.php
@@ -1,153 +1,203 @@
= 60";
- }
+ if (!is_writable(CACHE_DIR . "/export")) {
+ array_push($errors, "Data export cache is not writable (chmod -R 777 ".CACHE_DIR."/export)");
+ }
- if (SESSION_EXPIRE_TIME < SESSION_COOKIE_LIFETIME) {
- $err_msg = "SESSION_EXPIRE_TIME set in config.php should be >= to SESSION_COOKIE_LIFETIME";
- }
+ if (!is_writable(CACHE_DIR . "/js")) {
+ array_push($errors, "Javascript cache is not writable (chmod -R 777 ".CACHE_DIR."/js)");
+ }
+
+ if (strlen(FEED_CRYPT_KEY) > 0 && strlen(FEED_CRYPT_KEY) != 24) {
+ array_push($errors, "FEED_CRYPT_KEY should be exactly 24 characters in length.");
+ }
- if (SINGLE_USER_MODE) {
- $link = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
+ if (strlen(FEED_CRYPT_KEY) > 0 && !function_exists("mcrypt_decrypt")) {
+ array_push($errors, "FEED_CRYPT_KEY requires mcrypt functions which are not found.");
+ }
- if ($link) {
- $result = db_query($link, "SELECT id FROM ttrss_users WHERE id = 1");
+ if (GENERATED_CONFIG_CHECK != EXPECTED_CONFIG_VERSION) {
+ array_push($errors,
+ "Configuration option checker sanity_config.php is outdated, please recreate it using ./utils/regen_config_checks.sh");
+ }
+
+ foreach ($requred_defines as $d) {
+ if (!defined($d)) {
+ array_push($errors,
+ "Required configuration file parameter $d is not defined in config.php. You might need to copy it from config.php-dist.");
+ }
+ }
+
+ if (SINGLE_USER_MODE) {
+ $result = db_query( "SELECT id FROM ttrss_users WHERE id = 1");
if (db_num_rows($result) != 1) {
- $err_msg = "SINGLE_USER_MODE is enabled in config.php but default admin account is not found.";
+ array_push($errors, "SINGLE_USER_MODE is enabled in config.php but default admin account is not found.");
}
}
- }
- if (SELF_URL_PATH == "http://yourserver/tt-rss/") {
- if ($_SERVER['HTTP_REFERER']) {
- $err_msg = "Please set SELF_URL_PATH to the correct value for your server (possible value: " . $_SERVER['HTTP_REFERER'] . ")";
- } else {
- $err_msg = "Please set SELF_URL_PATH to the correct value for your server.";
+ if (SELF_URL_PATH == "http://yourserver/tt-rss/") {
+ $urlpath = preg_replace("/\w+\.php$/", "", make_self_url_path());
+
+ array_push($errors,
+ "Please set SELF_URL_PATH to the correct value for your server (possible value: $urlpath)");
}
- }
- if (!is_writable(ICONS_DIR)) {
- $err_msg = "ICONS_DIR defined in config.php is not writable (chmod -R 777 ".ICONS_DIR.").\n";
- }
+ if (!is_writable(ICONS_DIR)) {
+ array_push($errors, "ICONS_DIR defined in config.php is not writable (chmod -R 777 ".ICONS_DIR.").\n");
+ }
- if (!is_writable(LOCK_DIRECTORY)) {
- $err_msg = "LOCK_DIRECTORY defined in config.php is not writable (chmod -R 777 ".LOCK_DIRECTORY.").\n";
- }
+ if (!is_writable(LOCK_DIRECTORY)) {
+ array_push($errors, "LOCK_DIRECTORY defined in config.php is not writable (chmod -R 777 ".LOCK_DIRECTORY.").\n");
+ }
- if (ini_get("open_basedir")) {
- $err_msg = "PHP configuration option open_basedir is not supported. Please disable this in PHP settings file (php.ini).";
- }
+ if (!function_exists("curl_init") && !ini_get("allow_url_fopen")) {
+ array_push($errors, "PHP configuration option allow_url_fopen is disabled, and CURL functions are not present. Either enable allow_url_fopen or install PHP extension for CURL.");
+ }
- if (!function_exists("curl_init") && !ini_get("allow_url_fopen")) {
- $err_msg = "PHP configuration option allow_url_fopen is disabled, and CURL functions are not present. Either enable allow_url_fopen or install PHP extension for CURL.";
- }
+ if (!function_exists("json_encode")) {
+ array_push($errors, "PHP support for JSON is required, but was not found.");
+ }
- if (!function_exists("json_encode")) {
- $err_msg = "PHP support for JSON is required, but was not found.";
- }
+ if (DB_TYPE == "mysql" && !function_exists("mysql_connect")) {
+ array_push($errors, "PHP support for MySQL is required for configured DB_TYPE in config.php.");
+ }
- if (DB_TYPE == "mysql" && !function_exists("mysql_connect")) {
- $err_msg = "PHP support for MySQL is required for configured DB_TYPE in config.php.";
- }
+ if (DB_TYPE == "pgsql" && !function_exists("pg_connect")) {
+ array_push($errors, "PHP support for PostgreSQL is required for configured DB_TYPE in config.php");
+ }
- if (DB_TYPE == "pgsql" && !function_exists("pg_connect")) {
- $err_msg = "PHP support for PostgreSQL is required for configured DB_TYPE in config.php";
- }
+ if (!function_exists("mb_strlen")) {
+ array_push($errors, "PHP support for mbstring functions is required but was not found.");
+ }
- if (!function_exists("mb_strlen")) {
- $err_msg = "PHP support for mbstring functions is required, but was not found.";
- }
+ if (!function_exists("hash")) {
+ array_push($errors, "PHP support for hash() function is required but was not found.");
+ }
- if (!function_exists("ctype_lower")) {
- $err_msg = "PHP support for ctype functions are required by HTMLPurifier.";
- }
+ if (!function_exists("ctype_lower")) {
+ array_push($errors, "PHP support for ctype functions are required by HTMLPurifier.");
+ }
- if (ini_get("safe_mode")) {
- $err_msg = "PHP safe mode setting is not supported.";
- }
+ if (!function_exists("iconv")) {
+ array_push($errors, "PHP support for iconv is required to handle multiple charsets.");
+ }
- if ((PUBSUBHUBBUB_HUB || PUBSUBHUBBUB_ENABLED) && !function_exists("curl_init")) {
- $err_msg = "PHP support for CURL is required for PubSubHubbub.";
- }
+ /* if (ini_get("safe_mode")) {
+ array_push($errors, "PHP safe mode setting is not supported.");
+ } */
+
+ if ((PUBSUBHUBBUB_HUB || PUBSUBHUBBUB_ENABLED) && !function_exists("curl_init")) {
+ array_push($errors, "PHP support for CURL is required for PubSubHubbub.");
+ }
- if (!class_exists("DOMDocument")) {
- $err_msg = "PHP support for DOMDocument is required, but was not found.";
+ if (!class_exists("DOMDocument")) {
+ array_push($errors, "PHP support for DOMDocument is required, but was not found.");
+ }
}
- }
- if ($err_msg && defined($_SERVER['REQUEST_URI'])) { ?>
-
-
Tiny Tiny RSS was unable to start properly. This usually means a misconfiguration or an incomplete upgrade. Please fix
+ errors indicated by the following messages:
-
Tiny Tiny RSS was unable to initialize properly. This usually means a misconfiguration or an incomplete upgrade. Please fix
- the error indicated by the following message:
+
-
You might want to check tt-rss wiki or the
- forums for more information. Please search the forums before creating new topic
- for your question.
+
You might want to check tt-rss wiki or the
+ forums for more information. Please search the forums before creating new topic
+ for your question.
-
-
+
- 0) {
+ echo "Tiny Tiny RSS was unable to start properly. This usually means a misconfiguration or an incomplete upgrade.\n";
+ echo "Please fix errors indicated by the following messages:\n\n";
+
+ foreach ($errors as $error) {
+ echo " * $error\n";
+ }
+
+ echo "\nYou might want to check tt-rss wiki or the forums for more information.\n";
+ echo "Please search the forums before creating new topic for your question.\n";
+
+ exit(-1);
+ }
}
+ initial_sanity_check();
+
?>