"TYPO3 4.0.1: typo3_src-4.0.1/typo3/init.php Source File", "datetime" => "Sat Dec 2 19:22:21 2006", "date" => "2 Dec 2006", "doxygenversion" => "1.4.6", "projectname" => "TYPO3 4.0.1", "projectnumber" => "4.0.1" ); get_header($doxygen_vars); ?>
00001 <?php 00002 /*************************************************************** 00003 * Copyright notice 00004 * 00005 * (c) 1999-2005 Kasper Skaarhoj (kasperYYYY@typo3.com) 00006 * All rights reserved 00007 * 00008 * This script is part of the TYPO3 project. The TYPO3 project is 00009 * free software; you can redistribute it and/or modify 00010 * it under the terms of the GNU General Public License as published by 00011 * the Free Software Foundation; either version 2 of the License, or 00012 * (at your option) any later version. 00013 * 00014 * The GNU General Public License can be found at 00015 * http://www.gnu.org/copyleft/gpl.html. 00016 * A copy is found in the textfile GPL.txt and important notices to the license 00017 * from the author is found in LICENSE.txt distributed with these scripts. 00018 * 00019 * 00020 * This script is distributed in the hope that it will be useful, 00021 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00022 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00023 * GNU General Public License for more details. 00024 * 00025 * This copyright notice MUST APPEAR in all copies of the script! 00026 ***************************************************************/ 00061 // ******************************* 00062 // Set error reporting 00063 // ******************************* 00064 error_reporting (E_ALL ^ E_NOTICE); 00065 00066 00067 // ******************************* 00068 // Define constants 00069 // ******************************* 00070 define('TYPO3_OS', stristr(PHP_OS,'win')&&!stristr(PHP_OS,'darwin')?'WIN':''); 00071 define('TYPO3_MODE','BE'); 00072 define('PATH_thisScript',str_replace('//','/', str_replace('\\','/', (php_sapi_name()=='cgi'||php_sapi_name()=='isapi' ||php_sapi_name()=='cgi-fcgi')&&($_SERVER['ORIG_PATH_TRANSLATED']?$_SERVER['ORIG_PATH_TRANSLATED']:$_SERVER['PATH_TRANSLATED'])? ($_SERVER['ORIG_PATH_TRANSLATED']?$_SERVER['ORIG_PATH_TRANSLATED']:$_SERVER['PATH_TRANSLATED']):($_SERVER['ORIG_SCRIPT_FILENAME']?$_SERVER['ORIG_SCRIPT_FILENAME']:$_SERVER['SCRIPT_FILENAME'])))); 00073 define('TYPO3_mainDir', 'typo3/'); // This is the directory of the backend administration for the sites of this TYPO3 installation. 00074 00075 00076 // ******************************* 00077 // Checking path 00078 // ******************************* 00079 $temp_path = str_replace('\\','/',dirname(PATH_thisScript).'/'); 00080 $temp_modPath=''; 00081 // If TYPO3_MOD_PATH is defined we must calculate the modPath since init.php must be included by a module 00082 if (substr($temp_path,-strlen(TYPO3_mainDir))!=TYPO3_mainDir) { 00083 if (defined('TYPO3_MOD_PATH')) { 00084 if (substr($temp_path,-strlen(TYPO3_MOD_PATH))==TYPO3_MOD_PATH) { 00085 $temp_path=substr($temp_path,0,-strlen(TYPO3_MOD_PATH)); 00086 $temp_modPath=TYPO3_MOD_PATH; 00087 } elseif (substr(TYPO3_MOD_PATH,0,13)=='../typo3conf/' && (substr(TYPO3_MOD_PATH,3)==substr($temp_path,-strlen(substr(TYPO3_MOD_PATH,3))))) { 00088 $temp_path = substr($temp_path,0,-strlen(substr(TYPO3_MOD_PATH,3))).TYPO3_mainDir; 00089 $temp_modPath=TYPO3_MOD_PATH; 00090 } 00091 if (!@is_dir($temp_path)) { 00092 $temp_path=''; 00093 } 00094 } 00095 } 00096 00097 // OUTPUT error message and exit if there are problems with the path. Otherwise define constants and continue. 00098 if (!$temp_path || substr($temp_path,-strlen(TYPO3_mainDir))!=TYPO3_mainDir) { // This must be the case in order to proceed 00099 if (TYPO3_OS=='WIN') { 00100 $thisPath_base = basename(substr($temp_path,-strlen(TYPO3_mainDir))); 00101 $mainPath_base = basename(TYPO3_mainDir); 00102 if (!strcasecmp($thisPath, $mainPath)) { // Seems like the requested URL is not case-specific. This may happen on Windows only. -case. Otherwise, redirect to the correct URL. TYPO3_mainDir must be lower-case!! 00103 $script_name = (php_sapi_name()=='cgi'||php_sapi_name()=='cgi-fcgi')&&($_SERVER['ORIG_PATH_INFO']?$_SERVER['ORIG_PATH_INFO']:$_SERVER['PATH_INFO']) ? ($_SERVER['ORIG_PATH_INFO']?$_SERVER['ORIG_PATH_INFO']:$_SERVER['PATH_INFO']) : ($_SERVER['ORIG_SCRIPT_NAME']?$_SERVER['ORIG_SCRIPT_NAME']:$_SERVER['SCRIPT_NAME']); // Copied from t3lib_div::getIndpEnv() 00104 header('Location: '.str_replace($thisPath_base, $mainPath_base, $script_name)); 00105 exit; 00106 } 00107 } 00108 00109 echo ('Error in init.php: Path to TYPO3 main dir could not be resolved correctly. <br /><br /> 00110 This happens if the last '.strlen(TYPO3_mainDir).' characters of this path, '.$temp_path.', (\$temp_path) is NOT "'.TYPO3_mainDir.'" for some reason. <br /> 00111 You may have a strange server configuration. 00112 Or maybe you didn\'t set constant TYPO3_MOD_PATH in your module?'); 00113 echo '<br /><strong>If you expect any help from anybody on this issue, you should save this page as an html document and send it along with your request for help!</strong>'; 00114 if (strstr($temp_path,'typo3_src')) { 00115 echo '<br /><font color="red"><strong> It seems you are trying to run the TYPO3 source libraries DIRECTLY! You cannot do that. Please read the installation documents for more information.<br /> 00116 However here is a little tip for now: Download one of the zip-file "packages", eg the "testsite" or "dummy" package.</strong></font>'; 00117 } 00118 echo '<HR><pre>'; 00119 print_r(array( 00120 'TYPO3_OS'=>TYPO3_OS, 00121 'PATH_thisScript'=>PATH_thisScript, 00122 'php_sapi_name()'=>php_sapi_name(), 00123 'TYPO3_MOD_PATH'=>TYPO3_MOD_PATH, 00124 'PATH_TRANSLATED'=>$_SERVER['PATH_TRANSLATED'], 00125 'SCRIPT_FILENAME'=>$_SERVER['SCRIPT_FILENAME'] 00126 )); 00127 echo '</pre><HR>'; 00128 phpinfo(); 00129 exit; 00130 } else { 00131 define('PATH_typo3', $temp_path); // Abs. path of the TYPO3 admin dir (PATH_site + TYPO3_mainDir). 00132 define('PATH_typo3_mod', $temp_modPath); // Relative path (from the PATH_typo3) to a properly configured module 00133 define('PATH_site', substr(PATH_typo3,0,-strlen(TYPO3_mainDir))); // Abs. path to directory with the frontend (one above the admin-dir) 00134 $temp_path_t3lib = @is_dir(PATH_site.'t3lib/') ? PATH_site.'t3lib/' : PATH_typo3.'t3lib/'; 00135 define('PATH_t3lib', $temp_path_t3lib); // Abs. path to t3lib/ (general TYPO3 library) within the TYPO3 admin dir 00136 define('PATH_typo3conf', PATH_site.'typo3conf/'); // Abs. TYPO3 configuration path (local, not part of source) 00137 } 00138 00139 00140 // ************************************************* 00141 // t3lib_div + extention management class included 00142 // ************************************************* 00143 require_once(PATH_t3lib.'class.t3lib_div.php'); // The standard-library is included 00144 require_once(PATH_t3lib.'class.t3lib_extmgm.php'); // Extension API Management library included 00145 00146 // **************************************************** 00147 // Include configuration (localconf + ext_localconf) 00148 // **************************************************** 00149 require(PATH_t3lib.'config_default.php'); 00150 if (!defined ('TYPO3_db')) die ('The configuration file was not included.'); 00151 00152 require_once(PATH_t3lib.'class.t3lib_db.php'); // The database library 00153 $TYPO3_DB = t3lib_div::makeInstance('t3lib_DB'); 00154 $TYPO3_DB->debugOutput = $TYPO3_CONF_VARS['SYS']['sqlDebug']; 00155 00156 $CLIENT = t3lib_div::clientInfo(); // $CLIENT includes information about the browser/user-agent 00157 $PARSETIME_START = t3lib_div::milliseconds(); // Is set to the system time in milliseconds. This could be used to output script parsetime in the end of the script 00158 00159 00160 // ********************* 00161 // Libraries included 00162 // ********************* 00163 require_once(PATH_t3lib.'class.t3lib_userauth.php'); 00164 require_once(PATH_t3lib.'class.t3lib_userauthgroup.php'); 00165 require_once(PATH_t3lib.'class.t3lib_beuserauth.php'); 00166 require_once(PATH_t3lib.'class.t3lib_iconworks.php'); 00167 require_once(PATH_t3lib.'class.t3lib_befunc.php'); 00168 require_once(PATH_t3lib.'class.t3lib_cs.php'); 00169 00170 // ********************** 00171 // Check Hardcoded lock on BE: 00172 // ********************** 00173 if ($TYPO3_CONF_VARS['BE']['adminOnly'] < 0) { 00174 header('Status: 404 Not Found'); // Send Not Found header - if the webserver can make use of it... 00175 header('Location: http://'); // Just point us away from here... 00176 exit; // ... and exit good! 00177 } 00178 00179 // ********************** 00180 // Check IP 00181 // ********************** 00182 if (trim($TYPO3_CONF_VARS['BE']['IPmaskList'])) { 00183 if (!t3lib_div::cmpIP(t3lib_div::getIndpEnv('REMOTE_ADDR'), $TYPO3_CONF_VARS['BE']['IPmaskList'])) { 00184 header('Status: 404 Not Found'); // Send Not Found header - if the webserver can make use of it... 00185 header('Location: http://'); // Just point us away from here... 00186 exit; // ... and exit good! 00187 } 00188 } 00189 00190 00191 // ********************** 00192 // Check SSL (https) 00193 // ********************** 00194 if (intval($TYPO3_CONF_VARS['BE']['lockSSL']) && !(defined('TYPO3_cliMode') && TYPO3_cliMode)) { 00195 if ($TYPO3_CONF_VARS['BE']['lockSSL'] == 3) { 00196 $requestStr = substr(t3lib_div::getIndpEnv('TYPO3_REQUEST_SCRIPT'), strlen(t3lib_div::getIndpEnv('TYPO3_SITE_URL').TYPO3_mainDir)); 00197 if($requestStr == 'index.php' && !t3lib_div::getIndpEnv('TYPO3_SSL')) { 00198 list(,$url) = explode('://',t3lib_div::getIndpEnv('TYPO3_REQUEST_URL'),2); 00199 header('Location: https://'.$url); 00200 } 00201 } elseif (!t3lib_div::getIndpEnv('TYPO3_SSL') ) { 00202 if ($TYPO3_CONF_VARS['BE']['lockSSL'] == 2) { 00203 list(,$url) = explode('://',t3lib_div::getIndpEnv('TYPO3_SITE_URL').TYPO3_mainDir,2); 00204 header('Location: https://'.$url); // Just point us away from here... 00205 } else { 00206 header('Status: 404 Not Found'); // Send Not Found header - if the webserver can make use of it... 00207 header('Location: http://'); // Just point us away from here... 00208 } 00209 exit; // ... and exit good! 00210 } 00211 } 00212 00213 00214 // ******************************* 00215 // Checking environment 00216 // ******************************* 00217 if (t3lib_div::int_from_ver(phpversion())<4001000) die ('TYPO3 runs with PHP4.1.0+ only'); 00218 if (isset($_POST['GLOBALS']) || isset($_GET['GLOBALS'])) die('You cannot set the GLOBALS-array from outside the script.'); 00219 if (!get_magic_quotes_gpc()) { 00220 t3lib_div::addSlashesOnArray($_GET); 00221 t3lib_div::addSlashesOnArray($_POST); 00222 $HTTP_GET_VARS = $_GET; 00223 $HTTP_POST_VARS = $_POST; 00224 } 00225 00226 00227 // ******************************************** 00228 // Check if the install script should be run: 00229 // ******************************************** 00230 if (defined('TYPO3_enterInstallScript') && TYPO3_enterInstallScript) { 00231 if (!t3lib_extMgm::isLoaded('install')) die('Install Tool is not loaded as an extension.<br/>You must add the key "install" to the list of installed extensions in typo3conf/localconf.php, $TYPO3_CONF_VARS["EXT"]["extList"].'); 00232 00233 require_once(t3lib_extMgm::extPath('install').'mod/class.tx_install.php'); 00234 $install_check = t3lib_div::makeInstance('tx_install'); 00235 $install_check->allowUpdateLocalConf = 1; 00236 $install_check->init(); 00237 exit; 00238 } 00239 00240 00241 // ************************* 00242 // Connect to the database 00243 // ************************* 00244 if ($GLOBALS['TYPO3_DB']->sql_pconnect(TYPO3_db_host, TYPO3_db_username, TYPO3_db_password)) { 00245 if (!TYPO3_db) { 00246 t3lib_BEfunc::typo3PrintError ('No database selected','Database Error'); 00247 exit; 00248 } elseif (!$GLOBALS['TYPO3_DB']->sql_select_db(TYPO3_db)) { 00249 t3lib_BEfunc::typo3PrintError ('Cannot connect to the current database, "'.TYPO3_db.'"','Database Error'); 00250 exit; 00251 } 00252 } else { 00253 t3lib_BEfunc::typo3PrintError ('The current username, password or host was not accepted when the connection to the database was attempted to be established!','Database Error'); 00254 exit; 00255 } 00256 00257 00258 // ******************************* 00259 // Checks for proper browser 00260 // ******************************* 00261 if (!$CLIENT['BROWSER'] && !(defined('TYPO3_cliMode') && TYPO3_cliMode)) { 00262 t3lib_BEfunc::typo3PrintError ('Browser error','You must use 4+ browsers with TYPO3!',0); 00263 exit; 00264 } 00265 00266 00267 // **************************************************** 00268 // Include tables customization (tables + ext_tables) 00269 // **************************************************** 00270 include (TYPO3_tables_script ? PATH_typo3conf.TYPO3_tables_script : PATH_t3lib.'stddb/tables.php'); 00271 // Extension additions 00272 if ($TYPO3_LOADED_EXT['_CACHEFILE']) { 00273 include (PATH_typo3conf.$TYPO3_LOADED_EXT['_CACHEFILE'].'_ext_tables.php'); 00274 } else { 00275 include (PATH_t3lib.'stddb/load_ext_tables.php'); 00276 } 00277 // extScript 00278 if (TYPO3_extTableDef_script) { 00279 include (PATH_typo3conf.TYPO3_extTableDef_script); 00280 } 00281 00282 // ******************************* 00283 // BackEnd User authentication 00284 // ******************************* 00285 /* 00286 NOTICE: 00287 if constant TYPO3_PROCEED_IF_NO_USER is defined true (in the mainscript), this script will return even though a user did not log in! 00288 */ 00289 $BE_USER = t3lib_div::makeInstance('t3lib_beUserAuth'); // New backend user object 00290 $BE_USER->warningEmail = $TYPO3_CONF_VARS['BE']['warning_email_addr']; 00291 $BE_USER->lockIP = $TYPO3_CONF_VARS['BE']['lockIP']; 00292 $BE_USER->auth_timeout_field = intval($TYPO3_CONF_VARS['BE']['sessionTimeout']); 00293 $BE_USER->OS = TYPO3_OS; 00294 $BE_USER->start(); // Object is initialized 00295 $BE_USER->checkCLIuser(); 00296 $BE_USER->backendCheckLogin(); // Checking if there's a user logged in 00297 $BE_USER->trackBeUser($TYPO3_CONF_VARS['BE']['trackBeUser']); // Tracking backend user script hits 00298 00299 // Setting the web- and filemount global vars: 00300 $WEBMOUNTS = $BE_USER->returnWebmounts(); // ! WILL INCLUDE deleted mount pages as well! 00301 $FILEMOUNTS = $BE_USER->returnFilemounts(); 00302 00303 00304 // **************** 00305 // CLI processing 00306 // **************** 00307 if (defined('TYPO3_cliMode') && TYPO3_cliMode) { 00308 // Status output: 00309 if (!strcmp($_SERVER['argv'][1],'status')) { 00310 echo "Status of TYPO3 CLI script:\n\n"; 00311 echo "Username [uid]: ".$BE_USER->user['username']." [".$BE_USER->user['uid']."]\n"; 00312 echo "Database: ".TYPO3_db."\n"; 00313 echo "PATH_site: ".PATH_site."\n"; 00314 echo "\n"; 00315 exit; 00316 } 00317 } 00318 00319 // **************** 00320 // compression 00321 // **************** 00322 if ($TYPO3_CONF_VARS['BE']['compressionLevel']) { 00323 ob_start(); 00324 require_once (PATH_t3lib.'class.gzip_encode.php'); 00325 } 00326 ?>