Documentation TYPO3 par Ameos |
00001 <?php 00002 /*************************************************************** 00003 * Copyright notice 00004 * 00005 * (c) 1999-2004 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 define('PATH_t3lib', PATH_typo3.'t3lib/'); // Abs. path to t3lib/ (general TYPO3 library) within the TYPO3 admin dir 00125 define('PATH_typo3conf', PATH_site.'typo3conf/'); // Abs. TYPO3 configuration path (local, not part of source) 00126 } 00127 00128 00129 // ************************************************* 00130 // t3lib_div + extention management class included 00131 // ************************************************* 00132 require_once(PATH_t3lib.'class.t3lib_div.php'); // The standard-library is included 00133 require_once(PATH_t3lib.'class.t3lib_extmgm.php'); // Extension API Management library included 00134 00135 // **************************************************** 00136 // Include configuration (localconf + ext_localconf) 00137 // **************************************************** 00138 require(PATH_t3lib.'config_default.php'); 00139 if (!defined ('TYPO3_db')) die ('The configuration file was not included.'); 00140 00141 require_once(PATH_t3lib.'class.t3lib_db.php'); // The database library 00142 $TYPO3_DB = t3lib_div::makeInstance('t3lib_DB'); 00143 00144 $CLIENT = t3lib_div::clientInfo(); // $CLIENT includes information about the browser/user-agent 00145 $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 00146 00147 00148 // ********************* 00149 // Libraries included 00150 // ********************* 00151 require_once(PATH_t3lib.'class.t3lib_userauth.php'); 00152 require_once(PATH_t3lib.'class.t3lib_userauthgroup.php'); 00153 require_once(PATH_t3lib.'class.t3lib_beuserauth.php'); 00154 require_once(PATH_t3lib.'class.t3lib_iconworks.php'); 00155 require_once(PATH_t3lib.'class.t3lib_befunc.php'); 00156 require_once(PATH_t3lib.'class.t3lib_cs.php'); 00157 00158 // ********************** 00159 // Check Hardcoded lock on BE: 00160 // ********************** 00161 if ($TYPO3_CONF_VARS['BE']['adminOnly'] < 0) { 00162 header('Status: 404 Not Found'); // Send Not Found header - if the webserver can make use of it... 00163 header('Location: http://'); // Just point us away from here... 00164 exit; // ... and exit good! 00165 } 00166 00167 // ********************** 00168 // Check IP 00169 // ********************** 00170 if (trim($TYPO3_CONF_VARS['BE']['IPmaskList'])) { 00171 if (!t3lib_div::cmpIP(t3lib_div::getIndpEnv('REMOTE_ADDR'), $TYPO3_CONF_VARS['BE']['IPmaskList'])) { 00172 header('Status: 404 Not Found'); // Send Not Found header - if the webserver can make use of it... 00173 header('Location: http://'); // Just point us away from here... 00174 exit; // ... and exit good! 00175 } 00176 } 00177 00178 00179 // ********************** 00180 // Check SSL (https) 00181 // ********************** 00182 if (intval($TYPO3_CONF_VARS['BE']['lockSSL'])) { 00183 if (!t3lib_div::getIndpEnv('TYPO3_SSL')) { 00184 if ($TYPO3_CONF_VARS['BE']['lockSSL']==2) { 00185 list(,$url) = explode('://',t3lib_div::getIndpEnv('TYPO3_SITE_URL').TYPO3_mainDir,2); 00186 header('Location: https://'.$url); // Just point us away from here... 00187 } else { 00188 header('Status: 404 Not Found'); // Send Not Found header - if the webserver can make use of it... 00189 header('Location: http://'); // Just point us away from here... 00190 } 00191 exit; // ... and exit good! 00192 } 00193 } 00194 00195 00196 // ******************************* 00197 // Checking environment 00198 // ******************************* 00199 if (t3lib_div::int_from_ver(phpversion())<4001000) die ('TYPO3 runs with PHP4.1.0+ only'); 00200 if (isset($_POST['GLOBALS']) || isset($_GET['GLOBALS'])) die('You cannot set the GLOBALS-array from outside the script.'); 00201 if (!get_magic_quotes_gpc()) { 00202 t3lib_div::addSlashesOnArray($_GET); 00203 t3lib_div::addSlashesOnArray($_POST); 00204 $HTTP_GET_VARS = $_GET; 00205 $HTTP_POST_VARS = $_POST; 00206 } 00207 00208 00209 // ******************************************** 00210 // Check if the install script should be run: 00211 // ******************************************** 00212 if (defined('TYPO3_enterInstallScript') && TYPO3_enterInstallScript) { 00213 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 typo3temp/localconf.php, $TYPO3_CONF_VARS["EXT"]["extList"].'); 00214 00215 require_once(t3lib_extMgm::extPath('install').'mod/class.tx_install.php'); 00216 $install_check = t3lib_div::makeInstance('tx_install'); 00217 $install_check->allowUpdateLocalConf = 1; 00218 $install_check->init(); 00219 exit; 00220 } 00221 00222 00223 // ************************* 00224 // Connect to the database 00225 // ************************* 00226 if ($GLOBALS['TYPO3_DB']->sql_pconnect(TYPO3_db_host, TYPO3_db_username, TYPO3_db_password)) { 00227 if (!TYPO3_db) { 00228 t3lib_BEfunc::typo3PrintError ('No database selected','Database Error'); 00229 exit; 00230 } elseif (!$GLOBALS['TYPO3_DB']->sql_select_db(TYPO3_db)) { 00231 t3lib_BEfunc::typo3PrintError ('Cannot connect to the current database, "'.TYPO3_db.'"','Database Error'); 00232 exit; 00233 } 00234 } else { 00235 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'); 00236 exit; 00237 } 00238 00239 00240 // ******************************* 00241 // Checks for proper browser 00242 // ******************************* 00243 if (!$CLIENT['BROWSER'] && !(defined('TYPO3_cliMode') && TYPO3_cliMode)) { 00244 t3lib_BEfunc::typo3PrintError ('Browser error','You must use 4+ browsers with TYPO3!',0); 00245 exit; 00246 } 00247 00248 00249 // **************************************************** 00250 // Include tables customization (tables + ext_tables) 00251 // **************************************************** 00252 include (TYPO3_tables_script ? PATH_typo3conf.TYPO3_tables_script : PATH_t3lib.'stddb/tables.php'); 00253 // Extension additions 00254 if ($TYPO3_LOADED_EXT['_CACHEFILE']) { 00255 include (PATH_typo3conf.$TYPO3_LOADED_EXT['_CACHEFILE'].'_ext_tables.php'); 00256 } else { 00257 include (PATH_t3lib.'stddb/load_ext_tables.php'); 00258 } 00259 // extScript 00260 if (TYPO3_extTableDef_script) { 00261 include (PATH_typo3conf.TYPO3_extTableDef_script); 00262 } 00263 00264 // ******************************* 00265 // BackEnd User authentication 00266 // ******************************* 00267 /* 00268 NOTICE: 00269 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! 00270 */ 00271 $BE_USER = t3lib_div::makeInstance('t3lib_beUserAuth'); // New backend user object 00272 $BE_USER->warningEmail = $TYPO3_CONF_VARS['BE']['warning_email_addr']; 00273 $BE_USER->lockIP = $TYPO3_CONF_VARS['BE']['lockIP']; 00274 $BE_USER->auth_timeout_field = intval($TYPO3_CONF_VARS['BE']['sessionTimeout']); 00275 $BE_USER->OS = TYPO3_OS; 00276 $BE_USER->start(); // Object is initialized 00277 $BE_USER->checkCLIuser(); 00278 $BE_USER->backendCheckLogin(); // Checking if there's a user logged in 00279 $BE_USER->trackBeUser($TYPO3_CONF_VARS['BE']['trackBeUser']); // Tracking backend user script hits 00280 00281 // Setting the web- and filemount global vars: 00282 $WEBMOUNTS = $BE_USER->returnWebmounts(); // ! WILL INCLUDE deleted mount pages as well! 00283 $FILEMOUNTS = $BE_USER->returnFilemounts(); 00284 00285 00286 // **************** 00287 // CLI processing 00288 // **************** 00289 if (defined('TYPO3_cliMode') && TYPO3_cliMode) { 00290 // Status output: 00291 if (!strcmp($_SERVER['argv'][1],'status')) { 00292 echo "Status of TYPO3 CLI script:\n\n"; 00293 echo "Username [uid]: ".$BE_USER->user['username']." [".$BE_USER->user['uid']."]\n"; 00294 echo "Database: ".TYPO3_db."\n"; 00295 echo "PATH_site: ".PATH_site."\n"; 00296 echo "\n"; 00297 exit; 00298 } 00299 } 00300 00301 // **************** 00302 // compression 00303 // **************** 00304 if ($TYPO3_CONF_VARS['BE']['compressionLevel']) { 00305 ob_start(); 00306 require_once (PATH_t3lib.'class.gzip_encode.php'); 00307 } 00308 ?>