2006-08-19 07:04:45 +00:00
< ? php
2013-04-03 08:28:21 +00:00
/*
* WARNING !
*
* If you modify this file , you are ON YOUR OWN !
*
* Believe it or not , all of the checks below are required to succeed for
* tt - rss to actually function properly .
*
* If you think you have a better idea about what is or isn ' t required , feel
* free to modify the file , note though that you are therefore automatically
* disqualified from any further support by official channels , e . g . tt - rss . org
* issue tracker or the forums .
*
* If you come crying when stuff inevitably breaks , you will be mocked and told
* to get out . */
2012-11-04 13:31:06 +00:00
2013-03-28 06:10:55 +00:00
function make_self_url_path () {
$url_path = ( $_SERVER [ 'HTTPS' ] != " on " ? 'http://' : 'https://' ) . $_SERVER [ " HTTP_HOST " ] . parse_url ( $_SERVER [ " REQUEST_URI " ], PHP_URL_PATH );
return $url_path ;
}
2013-04-17 12:23:15 +00:00
function initial_sanity_check () {
2010-12-21 06:29:07 +00:00
2012-05-17 08:23:14 +00:00
$errors = array ();
2010-12-21 06:29:07 +00:00
2012-05-17 08:23:14 +00:00
if ( ! file_exists ( " config.php " )) {
array_push ( $errors , " Configuration file not found. Looks like you forgot to copy config.php-dist to config.php and edit it. " );
} else {
2011-01-11 09:20:00 +00:00
2012-05-17 08:23:14 +00:00
require_once " sanity_config.php " ;
2006-08-20 10:27:25 +00:00
2013-03-26 18:38:05 +00:00
if ( file_exists ( " install " ) && ! file_exists ( " config.php " )) {
array_push ( $errors , " Please copy config.php-dist to config.php or run the installer in install/ " );
}
2012-12-27 17:22:39 +00:00
if ( strpos ( PLUGINS , " auth_ " ) === FALSE ) {
array_push ( $errors , " Please enable at least one authentication module via PLUGINS constant in config.php " );
}
2012-05-17 08:23:14 +00:00
if ( function_exists ( 'posix_getuid' ) && posix_getuid () == 0 ) {
array_push ( $errors , " Please don't run this script as root. " );
}
2006-10-01 10:05:20 +00:00
2013-03-16 08:06:34 +00:00
if ( version_compare ( PHP_VERSION , '5.3.0' , '<' )) {
2012-09-15 13:18:43 +00:00
array_push ( $errors , " PHP version 5.3.0 or newer required. " );
2012-08-23 19:17:32 +00:00
}
2012-05-17 08:23:14 +00:00
if ( CONFIG_VERSION != EXPECTED_CONFIG_VERSION ) {
2012-07-10 11:24:04 +00:00
array_push ( $errors , " Configuration file (config.php) has incorrect version. Update it with new options from config.php-dist and set CONFIG_VERSION to the correct value. " );
2012-05-17 08:23:14 +00:00
}
2006-10-01 10:05:20 +00:00
2012-05-17 08:23:14 +00:00
if ( ! is_writable ( CACHE_DIR . " /images " )) {
array_push ( $errors , " Image cache is not writable (chmod -R 777 " . CACHE_DIR . " /images) " );
}
2006-10-01 10:05:20 +00:00
2013-04-11 15:12:00 +00:00
if ( ! is_writable ( CACHE_DIR . " /upload " )) {
array_push ( $errors , " Upload cache is not writable (chmod -R 777 " . CACHE_DIR . " /upload) " );
}
2012-05-17 08:23:14 +00:00
if ( ! is_writable ( CACHE_DIR . " /export " )) {
array_push ( $errors , " Data export cache is not writable (chmod -R 777 " . CACHE_DIR . " /export) " );
2011-12-13 15:20:26 +00:00
}
2006-10-01 10:05:20 +00:00
2013-03-18 07:00:44 +00:00
if ( ! is_writable ( CACHE_DIR . " /js " )) {
array_push ( $errors , " Javascript cache is not writable (chmod -R 777 " . CACHE_DIR . " /js) " );
}
2013-04-13 14:32:57 +00:00
if ( strlen ( FEED_CRYPT_KEY ) > 0 && strlen ( FEED_CRYPT_KEY ) != 24 ) {
2013-04-13 14:24:27 +00:00
array_push ( $errors , " FEED_CRYPT_KEY should be exactly 24 characters in length. " );
}
2013-04-13 14:32:57 +00:00
if ( strlen ( FEED_CRYPT_KEY ) > 0 && ! function_exists ( " mcrypt_decrypt " )) {
2013-04-13 14:24:27 +00:00
array_push ( $errors , " FEED_CRYPT_KEY requires mcrypt functions which are not found. " );
}
2012-05-17 08:23:14 +00:00
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 " );
}
2006-10-01 10:05:20 +00:00
2012-05-17 08:23:14 +00:00
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 ) {
2013-04-17 14:34:18 +00:00
$result = db_query ( " SELECT id FROM ttrss_users WHERE id = 1 " );
2010-06-10 10:29:55 +00:00
2013-04-17 12:23:15 +00:00
if ( db_num_rows ( $result ) != 1 ) {
array_push ( $errors , " SINGLE_USER_MODE is enabled in config.php but default admin account is not found. " );
2011-12-13 15:20:26 +00:00
}
2010-06-10 10:29:55 +00:00
}
2007-09-20 03:00:19 +00:00
2012-05-17 08:23:14 +00:00
if ( SELF_URL_PATH == " http://yourserver/tt-rss/ " ) {
2013-03-28 06:10:55 +00:00
$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: <b> $urlpath </b>) " );
2011-12-13 15:20:26 +00:00
}
2007-09-25 04:06:21 +00:00
2012-05-17 08:23:14 +00:00
if ( ! is_writable ( ICONS_DIR )) {
array_push ( $errors , " ICONS_DIR defined in config.php is not writable (chmod -R 777 " . ICONS_DIR . " ). \n " );
}
2007-09-25 04:06:21 +00:00
2012-05-17 08:23:14 +00:00
if ( ! is_writable ( LOCK_DIRECTORY )) {
array_push ( $errors , " LOCK_DIRECTORY defined in config.php is not writable (chmod -R 777 " . LOCK_DIRECTORY . " ). \n " );
}
2011-12-14 05:38:56 +00:00
2012-05-17 08:23:14 +00:00
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. " );
}
2010-06-30 08:57:11 +00:00
2012-05-17 08:23:14 +00:00
if ( ! function_exists ( " json_encode " )) {
array_push ( $errors , " PHP support for JSON is required, but was not found. " );
}
2011-11-06 18:07:52 +00:00
2012-05-17 08:23:14 +00:00
if ( DB_TYPE == " mysql " && ! function_exists ( " mysql_connect " )) {
array_push ( $errors , " PHP support for MySQL is required for configured DB_TYPE in config.php. " );
}
2010-11-01 09:18:06 +00:00
2012-05-17 08:23:14 +00:00
if ( DB_TYPE == " pgsql " && ! function_exists ( " pg_connect " )) {
array_push ( $errors , " PHP support for PostgreSQL is required for configured DB_TYPE in config.php " );
}
2010-12-27 12:09:30 +00:00
2012-05-17 08:23:14 +00:00
if ( ! function_exists ( " mb_strlen " )) {
array_push ( $errors , " PHP support for mbstring functions is required but was not found. " );
}
2012-03-19 17:23:59 +00:00
2012-05-17 08:23:14 +00:00
if ( ! function_exists ( " hash " )) {
array_push ( $errors , " PHP support for hash() function is required but was not found. " );
}
2010-12-27 12:09:30 +00:00
2012-05-17 08:23:14 +00:00
if ( ! function_exists ( " ctype_lower " )) {
array_push ( $errors , " PHP support for ctype functions are required by HTMLPurifier. " );
}
2010-12-27 12:09:30 +00:00
2013-03-17 11:59:37 +00:00
if ( ! function_exists ( " iconv " )) {
array_push ( $errors , " PHP support for iconv is required to handle multiple charsets. " );
}
2013-03-18 21:10:02 +00:00
/* if ( ini_get ( " safe_mode " )) {
2012-05-17 08:23:14 +00:00
array_push ( $errors , " PHP safe mode setting is not supported. " );
2013-03-18 21:10:02 +00:00
} */
2010-12-27 12:09:30 +00:00
2012-05-17 08:23:14 +00:00
if (( PUBSUBHUBBUB_HUB || PUBSUBHUBBUB_ENABLED ) && ! function_exists ( " curl_init " )) {
array_push ( $errors , " PHP support for CURL is required for PubSubHubbub. " );
}
2010-12-27 12:09:30 +00:00
2012-05-17 08:23:14 +00:00
if ( ! class_exists ( " DOMDocument " )) {
array_push ( $errors , " PHP support for DOMDocument is required, but was not found. " );
}
2011-12-13 15:20:26 +00:00
}
2011-10-18 06:44:23 +00:00
2012-05-17 08:23:14 +00:00
if ( count ( $errors ) > 0 && $_SERVER [ 'REQUEST_URI' ]) { ?>
< html >
< head >
< title > Startup failed </ title >
< meta http - equiv = " Content-Type " content = " text/html; charset=utf-8 " >
< link rel = " stylesheet " type = " text/css " href = " utility.css " >
</ head >
< body >
2013-03-27 06:59:26 +00:00
< div class = " floatingLogo " >< img src = " images/logo_small.png " ></ div >
< div class = " content " >
2010-12-27 12:09:30 +00:00
2012-05-17 08:23:14 +00:00
< h1 > Startup failed </ h1 >
2011-04-01 05:42:15 +00:00
2012-05-17 08:23:14 +00:00
< p > 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 :</ p >
2011-04-05 12:25:07 +00:00
2012-05-17 08:23:14 +00:00
< ? php foreach ( $errors as $error ) { echo format_error ( $error ); } ?>
2011-08-16 04:56:52 +00:00
2012-05-17 08:23:14 +00:00
< p > You might want to check tt - rss < a href = " http://tt-rss.org/wiki " > wiki </ a > or the
< a href = " http://tt-rss.org/forum " > forums </ a > for more information . Please search the forums before creating new topic
for your question .</ p >
2013-03-27 06:59:26 +00:00
</ div >
2011-12-13 15:20:26 +00:00
</ body >
</ html >
2011-04-12 15:29:45 +00:00
2012-05-17 08:23:14 +00:00
< ? php
die ;
} else if ( count ( $errors ) > 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 " ;
}
2012-07-10 11:11:55 +00:00
echo " \n You might want to check tt-rss wiki or the forums for more information. \n " ;
2012-05-17 08:23:14 +00:00
echo " Please search the forums before creating new topic for your question. \n " ;
exit ( - 1 );
}
2006-10-01 10:05:20 +00:00
}
2013-04-17 12:23:15 +00:00
initial_sanity_check ();
2012-05-17 08:23:14 +00:00
2005-11-23 17:20:17 +00:00
?>