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 = 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 00162 // ************************* 00163 // CLI dispatch processing 00164 // ************************* 00165 if (defined('TYPO3_cliMode') && TYPO3_cliMode && basename(PATH_thisScript)=='cli_dispatch.phpsh') { 00166 // First, take out the first argument (cli-key) 00167 $temp_cliScriptPath = array_shift($_SERVER['argv']); 00168 $temp_cliKey = array_shift($_SERVER['argv']); 00169 array_unshift($_SERVER['argv'],$temp_cliScriptPath); 00170 00171 // If cli_key was found in configuration, then set up the cliInclude path and module name: 00172 if ($temp_cliKey) { 00173 if (is_array($TYPO3_CONF_VARS['SC_OPTIONS']['GLOBAL']['cliKeys'][$temp_cliKey])) { 00174 define('TYPO3_cliInclude', t3lib_div::getFileAbsFileName($TYPO3_CONF_VARS['SC_OPTIONS']['GLOBAL']['cliKeys'][$temp_cliKey][0])); 00175 $MCONF['name'] = $TYPO3_CONF_VARS['SC_OPTIONS']['GLOBAL']['cliKeys'][$temp_cliKey][1]; 00176 } else { 00177 echo "The supplied 'cliKey' was not valid. Please use one of the available from this list:\n\n"; 00178 print_r(array_keys($TYPO3_CONF_VARS['SC_OPTIONS']['GLOBAL']['cliKeys'])); 00179 echo "\n"; 00180 exit; 00181 } 00182 } else { 00183 echo "Please supply a 'cliKey' as first argument. The following are available:\n\n"; 00184 print_r($TYPO3_CONF_VARS['SC_OPTIONS']['GLOBAL']['cliKeys']); 00185 echo "\n"; 00186 exit; 00187 } 00188 } 00189 00190 00191 00192 // ********************* 00193 // Libraries included 00194 // ********************* 00195 require_once(PATH_t3lib.'class.t3lib_userauth.php'); 00196 require_once(PATH_t3lib.'class.t3lib_userauthgroup.php'); 00197 require_once(PATH_t3lib.'class.t3lib_beuserauth.php'); 00198 require_once(PATH_t3lib.'class.t3lib_iconworks.php'); 00199 require_once(PATH_t3lib.'class.t3lib_befunc.php'); 00200 require_once(PATH_t3lib.'class.t3lib_cs.php'); 00201 00202 // ********************** 00203 // Check Hardcoded lock on BE: 00204 // ********************** 00205 if ($TYPO3_CONF_VARS['BE']['adminOnly'] < 0) { 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 exit; // ... and exit good! 00209 } 00210 00211 // ********************** 00212 // Check IP 00213 // ********************** 00214 if (trim($TYPO3_CONF_VARS['BE']['IPmaskList'])) { 00215 if (!t3lib_div::cmpIP(t3lib_div::getIndpEnv('REMOTE_ADDR'), $TYPO3_CONF_VARS['BE']['IPmaskList'])) { 00216 header('Status: 404 Not Found'); // Send Not Found header - if the webserver can make use of it... 00217 header('Location: http://'); // Just point us away from here... 00218 exit; // ... and exit good! 00219 } 00220 } 00221 00222 00223 // ********************** 00224 // Check SSL (https) 00225 // ********************** 00226 if (intval($TYPO3_CONF_VARS['BE']['lockSSL']) && !(defined('TYPO3_cliMode') && TYPO3_cliMode)) { 00227 if ($TYPO3_CONF_VARS['BE']['lockSSL'] == 3) { 00228 $requestStr = substr(t3lib_div::getIndpEnv('TYPO3_REQUEST_SCRIPT'), strlen(t3lib_div::getIndpEnv('TYPO3_SITE_URL').TYPO3_mainDir)); 00229 if($requestStr == 'index.php' && !t3lib_div::getIndpEnv('TYPO3_SSL')) { 00230 list(,$url) = explode('://',t3lib_div::getIndpEnv('TYPO3_REQUEST_URL'),2); 00231 header('Location: https://'.$url); 00232 } 00233 } elseif (!t3lib_div::getIndpEnv('TYPO3_SSL') ) { 00234 if ($TYPO3_CONF_VARS['BE']['lockSSL'] == 2) { 00235 list(,$url) = explode('://',t3lib_div::getIndpEnv('TYPO3_SITE_URL').TYPO3_mainDir,2); 00236 header('Location: https://'.$url); // Just point us away from here... 00237 } else { 00238 header('Status: 404 Not Found'); // Send Not Found header - if the webserver can make use of it... 00239 header('Location: http://'); // Just point us away from here... 00240 } 00241 exit; // ... and exit good! 00242 } 00243 } 00244 00245 00246 // ******************************* 00247 // Checking environment 00248 // ******************************* 00249 if (t3lib_div::int_from_ver(phpversion())<4001000) die ('TYPO3 runs with PHP4.1.0+ only'); 00250 if (isset($_POST['GLOBALS']) || isset($_GET['GLOBALS'])) die('You cannot set the GLOBALS-array from outside the script.'); 00251 if (!get_magic_quotes_gpc()) { 00252 t3lib_div::addSlashesOnArray($_GET); 00253 t3lib_div::addSlashesOnArray($_POST); 00254 $HTTP_GET_VARS = $_GET; 00255 $HTTP_POST_VARS = $_POST; 00256 } 00257 00258 00259 // ******************************************** 00260 // Check if the install script should be run: 00261 // ******************************************** 00262 if (defined('TYPO3_enterInstallScript') && TYPO3_enterInstallScript) { 00263 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"].'); 00264 00265 require_once(t3lib_extMgm::extPath('install').'mod/class.tx_install.php'); 00266 $install_check = t3lib_div::makeInstance('tx_install'); 00267 $install_check->allowUpdateLocalConf = 1; 00268 $install_check->init(); 00269 exit; 00270 } 00271 00272 00273 // ************************* 00274 // Connect to the database 00275 // ************************* 00276 if ($TYPO3_DB->sql_pconnect(TYPO3_db_host, TYPO3_db_username, TYPO3_db_password)) { 00277 if (!TYPO3_db) { 00278 t3lib_BEfunc::typo3PrintError ('No database selected','Database Error'); 00279 exit; 00280 } elseif (!$TYPO3_DB->sql_select_db(TYPO3_db)) { 00281 t3lib_BEfunc::typo3PrintError ('Cannot connect to the current database, "'.TYPO3_db.'"','Database Error'); 00282 exit; 00283 } 00284 } else { 00285 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'); 00286 exit; 00287 } 00288 00289 00290 // ******************************* 00291 // Checks for proper browser 00292 // ******************************* 00293 if (!$CLIENT['BROWSER'] && !(defined('TYPO3_cliMode') && TYPO3_cliMode)) { 00294 t3lib_BEfunc::typo3PrintError ('Browser error','Your browser version looks incompatible with this TYPO3 version!',0); 00295 exit; 00296 } 00297 00298 00299 // **************************************************** 00300 // Include tables customization (tables + ext_tables) 00301 // **************************************************** 00302 include (TYPO3_tables_script ? PATH_typo3conf.TYPO3_tables_script : PATH_t3lib.'stddb/tables.php'); 00303 // Extension additions 00304 if ($TYPO3_LOADED_EXT['_CACHEFILE']) { 00305 include (PATH_typo3conf.$TYPO3_LOADED_EXT['_CACHEFILE'].'_ext_tables.php'); 00306 } else { 00307 include (PATH_t3lib.'stddb/load_ext_tables.php'); 00308 } 00309 // extScript 00310 if (TYPO3_extTableDef_script) { 00311 include (PATH_typo3conf.TYPO3_extTableDef_script); 00312 } 00313 00314 00315 00316 // ******************************* 00317 // BackEnd User authentication 00318 // ******************************* 00319 /* 00320 NOTICE: 00321 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! 00322 */ 00323 $BE_USER = t3lib_div::makeInstance('t3lib_beUserAuth'); // New backend user object 00324 $BE_USER->warningEmail = $TYPO3_CONF_VARS['BE']['warning_email_addr']; 00325 $BE_USER->lockIP = $TYPO3_CONF_VARS['BE']['lockIP']; 00326 $BE_USER->auth_timeout_field = intval($TYPO3_CONF_VARS['BE']['sessionTimeout']); 00327 $BE_USER->OS = TYPO3_OS; 00328 $BE_USER->start(); // Object is initialized 00329 $BE_USER->checkCLIuser(); 00330 $BE_USER->backendCheckLogin(); // Checking if there's a user logged in 00331 $BE_USER->trackBeUser($TYPO3_CONF_VARS['BE']['trackBeUser']); // Tracking backend user script hits 00332 00333 // Setting the web- and filemount global vars: 00334 $WEBMOUNTS = $BE_USER->returnWebmounts(); // ! WILL INCLUDE deleted mount pages as well! 00335 $FILEMOUNTS = $BE_USER->returnFilemounts(); 00336 00337 00338 // **************** 00339 // CLI processing 00340 // **************** 00341 if (defined('TYPO3_cliMode') && TYPO3_cliMode) { 00342 // Status output: 00343 if (!strcmp($_SERVER['argv'][1],'status')) { 00344 echo "Status of TYPO3 CLI script:\n\n"; 00345 echo "Username [uid]: ".$BE_USER->user['username']." [".$BE_USER->user['uid']."]\n"; 00346 echo "Database: ".TYPO3_db."\n"; 00347 echo "PATH_site: ".PATH_site."\n"; 00348 echo "\n"; 00349 exit; 00350 } 00351 } 00352 00353 // **************** 00354 // compression 00355 // **************** 00356 if ($TYPO3_CONF_VARS['BE']['compressionLevel']) { 00357 ob_start(); 00358 require_once (PATH_t3lib.'class.gzip_encode.php'); 00359 } 00360 ?>