Documentation TYPO3 par Ameos |
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 = 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 echo ('Error in init.php: Path to TYPO3 main dir could not be resolved correctly. <br /><br /> 00100 This happens if the last '.strlen(TYPO3_mainDir).' characters of this path, '.$temp_path.', (\$temp_path) is NOT "'.TYPO3_mainDir.'" for some reason. <br /> 00101 You may have a strange server configuration. 00102 Or maybe you didn\'t set constant TYPO3_MOD_PATH in your module?'); 00103 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>'; 00104 if (strstr($temp_path,'typo3_src')) { 00105 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 /> 00106 However here is a little tip for now: Download one of the zip-file "packages", eg the "testsite" or "dummy" package.</strong></font>'; 00107 } 00108 echo '<HR><pre>'; 00109 print_r(array( 00110 'TYPO3_OS'=>TYPO3_OS, 00111 'PATH_thisScript'=>PATH_thisScript, 00112 'php_sapi_name()'=>php_sapi_name(), 00113 'TYPO3_MOD_PATH'=>TYPO3_MOD_PATH, 00114 'PATH_TRANSLATED'=>$_SERVER['PATH_TRANSLATED'], 00115 'SCRIPT_FILENAME'=>$_SERVER['SCRIPT_FILENAME'] 00116 )); 00117 echo '</pre><HR>'; 00118 phpinfo(); 00119 exit; 00120 } else { 00121 define('PATH_typo3', $temp_path); // Abs. path of the TYPO3 admin dir (PATH_site + TYPO3_mainDir). 00122 define('PATH_typo3_mod', $temp_modPath); // Relative path (from the PATH_typo3) to a properly configured module 00123 define('PATH_site', substr(PATH_typo3,0,-strlen(TYPO3_mainDir))); // Abs. path to directory with the frontend (one above the admin-dir) 00124 $temp_path_t3lib = @is_dir(PATH_site.'t3lib/') ? PATH_site.'t3lib/' : PATH_typo3.'t3lib/'; 00125 define('PATH_t3lib', $temp_path_t3lib); // Abs. path to t3lib/ (general TYPO3 library) within the TYPO3 admin dir 00126 define('PATH_typo3conf', PATH_site.'typo3conf/'); // Abs. TYPO3 configuration path (local, not part of source) 00127 } 00128 00129 00130 // ************************************************* 00131 // t3lib_div + extention management class included 00132 // ************************************************* 00133 require_once(PATH_t3lib.'class.t3lib_div.php'); // The standard-library is included 00134 require_once(PATH_t3lib.'class.t3lib_extmgm.php'); // Extension API Management library included 00135 00136 // **************************************************** 00137 // Include configuration (localconf + ext_localconf) 00138 // **************************************************** 00139 require(PATH_t3lib.'config_default.php'); 00140 if (!defined ('TYPO3_db')) die ('The configuration file was not included.'); 00141 00142 require_once(PATH_t3lib.'class.t3lib_db.php'); // The database library 00143 $TYPO3_DB = t3lib_div::makeInstance('t3lib_DB'); 00144 $TYPO3_DB->debugOutput = $TYPO3_CONF_VARS['SYS']['sqlDebug']; 00145 00146 $CLIENT = t3lib_div::clientInfo(); // $CLIENT includes information about the browser/user-agent 00147 $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 00148 00149 00150 // ********************* 00151 // Libraries included 00152 // ********************* 00153 require_once(PATH_t3lib.'class.t3lib_userauth.php'); 00154 require_once(PATH_t3lib.'class.t3lib_userauthgroup.php'); 00155 require_once(PATH_t3lib.'class.t3lib_beuserauth.php'); 00156 require_once(PATH_t3lib.'class.t3lib_iconworks.php'); 00157 require_once(PATH_t3lib.'class.t3lib_befunc.php'); 00158 require_once(PATH_t3lib.'class.t3lib_cs.php'); 00159 00160 // ********************** 00161 // Check Hardcoded lock on BE: 00162 // ********************** 00163 if ($TYPO3_CONF_VARS['BE']['adminOnly'] < 0) { 00164 header('Status: 404 Not Found'); // Send Not Found header - if the webserver can make use of it... 00165 header('Location: http://'); // Just point us away from here... 00166 exit; // ... and exit good! 00167 } 00168 00169 // ********************** 00170 // Check IP 00171 // ********************** 00172 if (trim($TYPO3_CONF_VARS['BE']['IPmaskList'])) { 00173 if (!t3lib_div::cmpIP(t3lib_div::getIndpEnv('REMOTE_ADDR'), $TYPO3_CONF_VARS['BE']['IPmaskList'])) { 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 00181 // ********************** 00182 // Check SSL (https) 00183 // ********************** 00184 if (intval($TYPO3_CONF_VARS['BE']['lockSSL']) && !(defined('TYPO3_cliMode') && TYPO3_cliMode)) { 00185 if ($TYPO3_CONF_VARS['BE']['lockSSL'] == 3) { 00186 $requestStr = substr(t3lib_div::getIndpEnv('TYPO3_REQUEST_SCRIPT'), strlen(t3lib_div::getIndpEnv('TYPO3_SITE_URL').TYPO3_mainDir)); 00187 if($requestStr == 'index.php' && !t3lib_div::getIndpEnv('TYPO3_SSL')) { 00188 list(,$url) = explode('://',t3lib_div::getIndpEnv('TYPO3_REQUEST_URL'),2); 00189 header('Location: https://'.$url); 00190 } 00191 } elseif (!t3lib_div::getIndpEnv('TYPO3_SSL') ) { 00192 if ($TYPO3_CONF_VARS['BE']['lockSSL'] == 2) { 00193 list(,$url) = explode('://',t3lib_div::getIndpEnv('TYPO3_SITE_URL').TYPO3_mainDir,2); 00194 header('Location: https://'.$url); // Just point us away from here... 00195 } else { 00196 header('Status: 404 Not Found'); // Send Not Found header - if the webserver can make use of it... 00197 header('Location: http://'); // Just point us away from here... 00198 } 00199 exit; // ... and exit good! 00200 } 00201 } 00202 00203 00204 // ******************************* 00205 // Checking environment 00206 // ******************************* 00207 if (t3lib_div::int_from_ver(phpversion())<4001000) die ('TYPO3 runs with PHP4.1.0+ only'); 00208 if (isset($_POST['GLOBALS']) || isset($_GET['GLOBALS'])) die('You cannot set the GLOBALS-array from outside the script.'); 00209 if (!get_magic_quotes_gpc()) { 00210 t3lib_div::addSlashesOnArray($_GET); 00211 t3lib_div::addSlashesOnArray($_POST); 00212 $HTTP_GET_VARS = $_GET; 00213 $HTTP_POST_VARS = $_POST; 00214 } 00215 00216 00217 // ******************************************** 00218 // Check if the install script should be run: 00219 // ******************************************** 00220 if (defined('TYPO3_enterInstallScript') && TYPO3_enterInstallScript) { 00221 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"].'); 00222 00223 require_once(t3lib_extMgm::extPath('install').'mod/class.tx_install.php'); 00224 $install_check = t3lib_div::makeInstance('tx_install'); 00225 $install_check->allowUpdateLocalConf = 1; 00226 $install_check->init(); 00227 exit; 00228 } 00229 00230 00231 // ************************* 00232 // Connect to the database 00233 // ************************* 00234 if ($GLOBALS['TYPO3_DB']->sql_pconnect(TYPO3_db_host, TYPO3_db_username, TYPO3_db_password)) { 00235 if (!TYPO3_db) { 00236 t3lib_BEfunc::typo3PrintError ('No database selected','Database Error'); 00237 exit; 00238 } elseif (!$GLOBALS['TYPO3_DB']->sql_select_db(TYPO3_db)) { 00239 t3lib_BEfunc::typo3PrintError ('Cannot connect to the current database, "'.TYPO3_db.'"','Database Error'); 00240 exit; 00241 } 00242 } else { 00243 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'); 00244 exit; 00245 } 00246 00247 00248 // ******************************* 00249 // Checks for proper browser 00250 // ******************************* 00251 if (!$CLIENT['BROWSER'] && !(defined('TYPO3_cliMode') && TYPO3_cliMode)) { 00252 t3lib_BEfunc::typo3PrintError ('Browser error','You must use 4+ browsers with TYPO3!',0); 00253 exit; 00254 } 00255 00256 00257 // **************************************************** 00258 // Include tables customization (tables + ext_tables) 00259 // **************************************************** 00260 include (TYPO3_tables_script ? PATH_typo3conf.TYPO3_tables_script : PATH_t3lib.'stddb/tables.php'); 00261 // Extension additions 00262 if ($TYPO3_LOADED_EXT['_CACHEFILE']) { 00263 include (PATH_typo3conf.$TYPO3_LOADED_EXT['_CACHEFILE'].'_ext_tables.php'); 00264 } else { 00265 include (PATH_t3lib.'stddb/load_ext_tables.php'); 00266 } 00267 // extScript 00268 if (TYPO3_extTableDef_script) { 00269 include (PATH_typo3conf.TYPO3_extTableDef_script); 00270 } 00271 00272 // ******************************* 00273 // BackEnd User authentication 00274 // ******************************* 00275 /* 00276 NOTICE: 00277 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! 00278 */ 00279 $BE_USER = t3lib_div::makeInstance('t3lib_beUserAuth'); // New backend user object 00280 $BE_USER->warningEmail = $TYPO3_CONF_VARS['BE']['warning_email_addr']; 00281 $BE_USER->lockIP = $TYPO3_CONF_VARS['BE']['lockIP']; 00282 $BE_USER->auth_timeout_field = intval($TYPO3_CONF_VARS['BE']['sessionTimeout']); 00283 $BE_USER->OS = TYPO3_OS; 00284 $BE_USER->start(); // Object is initialized 00285 $BE_USER->checkCLIuser(); 00286 $BE_USER->backendCheckLogin(); // Checking if there's a user logged in 00287 $BE_USER->trackBeUser($TYPO3_CONF_VARS['BE']['trackBeUser']); // Tracking backend user script hits 00288 00289 // Setting the web- and filemount global vars: 00290 $WEBMOUNTS = $BE_USER->returnWebmounts(); // ! WILL INCLUDE deleted mount pages as well! 00291 $FILEMOUNTS = $BE_USER->returnFilemounts(); 00292 00293 00294 // **************** 00295 // CLI processing 00296 // **************** 00297 if (defined('TYPO3_cliMode') && TYPO3_cliMode) { 00298 // Status output: 00299 if (!strcmp($_SERVER['argv'][1],'status')) { 00300 echo "Status of TYPO3 CLI script:\n\n"; 00301 echo "Username [uid]: ".$BE_USER->user['username']." [".$BE_USER->user['uid']."]\n"; 00302 echo "Database: ".TYPO3_db."\n"; 00303 echo "PATH_site: ".PATH_site."\n"; 00304 echo "\n"; 00305 exit; 00306 } 00307 } 00308 00309 // **************** 00310 // compression 00311 // **************** 00312 if ($TYPO3_CONF_VARS['BE']['compressionLevel']) { 00313 ob_start(); 00314 require_once (PATH_t3lib.'class.gzip_encode.php'); 00315 } 00316 ?>