1<?php 2/* $Id: step_2.inc.php,v 1.19 2006/04/27 11:42:55 k-fish Exp $ */ 3if(!defined("SETUP_RUNNING")) die('Use index.php for running setup!'); 4 5/*************************************************************************** 6* what to check 7***************************************************************************/ 8 9// just the minimum version needed 10$neededPHPVersion = '4.2.0'; // jpgraph says it needs at least 4.3.1, but... 11 12$neededMemory = 16; //memory in Mb 13 14// list all required extensions with their PHP name 15// 0-must, 1-optional 16$neededExtensions = array('xml' => 0, 17'gd' => 0, 18'pcre' => 0, 19'session' => 0, 20//'curl' => 1 //was needed only for check rooturl at install : now not needed 21); 22 23$dbDrivers = array( 'mysql' => array('mysql', 'MySQL'), 24 'pgsql' => array('postgres7', 'PostgreSQL') 25 ); 26 // at least for these we need the name of the PHP extensions 27 //'' => array('', 'IBM DB2'), // loge, go for it! 28 //'' => array('', 'Generic ODBC'), 29 //'' => array('mssql', 'MS-SQL'), 30 //'' => array('oci8', 'Oracle 8'), 31 //'' => array('msql', 'mSQL'), 32 //'' => array('ibase', 'interbase'), 33 //'' => array('sybase', 'Sybase'), 34 //'' => array('fbsql', 'Frontbase') 35 36 37// the first number in the array is the value we expect, 38// the second is the type of check 0-must, 1-should, 2-info 39$neededSettings = array('session.auto_start' => array(0,0), 40'safe_mode' => array(0,1), 41'magic_quotes_runtime' => array(0,0), 42'file_uploads' => array(1,1), 43'display_errors' => array(0,1), 44'allow_call_time_pass_reference' => array(1,1), 45'register_globals' => array(0,2), 46'magic_quotes_gpc' => array(0,2) 47); 48 49/*************************************************************************** 50***************************************************************************/ 51 52/* save posted data */ 53if (isset($_POST["lang_charset"])) { 54 $lc = explode(";", $_POST["lang_charset"]); 55 $_SESSION["SETUP"]["lang"] = $lc[0]; 56 $_SESSION["SETUP"]["charset"] = $lc[1]; 57} 58 59$_SESSION["SETUP"]["system"] = true; 60 61// uninstall? 62if($_SESSION["SETUP"]['uninstall'] === true){ 63 $smarty->assign('uninstall', true); 64} // end uninstall 65else{ 66 $smarty->assign('uninstall', false); 67 $report = array(); 68 69 // check PHP version 70 if (PHP_VERSION < $neededPHPVersion){ 71 $_SESSION["SETUP"]["system"] = false; 72 $report[] = array('status' => 'error', 73 'title' => Lang::getParmLang(Lang::getLanguageString('phpreq'), array($neededPHPVersion)), 74 'desc' => Lang::getParmLang(Lang::getLanguageString('phpreqdesc'), array($neededPHPVersion))); 75 } 76 else{ 77 $report[] = array('status' => 'ok', 78 'title' => Lang::getParmLang(Lang::getLanguageString('phpreq'), array($neededPHPVersion)), 79 'desc' => ''); 80 } 81 82 /* we must be able to write the configfile */ 83 clearstatcache(); 84 if(!is_writeable(ROOTPATH)){ 85 $_SESSION["SETUP"]["system"] = false; 86 $report[] = array('status' => 'error', 87 'title' => Lang::getParmLang(Lang::getLanguageString('writereq'), array(ROOTPATH)), 88 'desc' => Lang::getParmLang(Lang::getLanguageString('writereqdesc'), array(ROOTPATH))); 89 } 90 else{ 91 $report[] = array('status' => 'ok', 92 'title' => Lang::getParmLang(Lang::getLanguageString('writereq'), array(ROOTPATH)), 93 'desc' => ''); 94 } 95 96 // check needed PHP extensions 97 $extensions = get_loaded_extensions(); 98 99//databases drivers 100 $str_db_needed=""; 101 $icpt = 0; 102 $dbs = array(); 103 foreach($dbDrivers as $dbext => $dbd){ 104 if ($icpt>0) { 105 $str_db_needed.=", "; 106 } 107 $icpt++; 108 $str_db_needed .=$dbd[1]; 109 if(in_array($dbext, $extensions)){ 110 $dbs[$dbd[0]] = $dbd[1]; 111 } 112 }//foreach 113 if (count($dbs)==0) { 114 115 $_SESSION["SETUP"]["system"] = false; 116 $report[] = array( 'status' => 'error', 117 'title' => Lang::getLanguageString('dbneeded'), 118 'desc' => Lang::getLanguageString('dbneeded_msg')." : ".$str_db_needed 119 ); 120 } 121 else{ 122 $report[] = array('status' => 'ok', 123 'title' => Lang::getLanguageString('dbneeded'), 124 'desc' => '' 125 ); 126 } 127//----------- 128 129 foreach($neededExtensions as $ext => $v){ 130 if(!in_array($ext, $extensions)){ 131 if($v == 0){ 132 $_SESSION["SETUP"]["system"] = false; 133 $report[] = array('status' => 'error', 134 'title' => Lang::getParmLang(Lang::getLanguageString('extreq0'), array($ext)), 135 'desc' => Lang::getParmLang(Lang::getLanguageString('extreqdesc0'), array($ext))); 136 } 137 else{ 138 $report[] = array('status' => 'note', 139 'title' => Lang::getParmLang(Lang::getLanguageString('extreq1'), array($ext)), 140 'desc' => Lang::getParmLang(Lang::getLanguageString('extreqdesc1'), array($ext))); 141 } 142 } 143 else{ 144 $report[] = array('status' => 'ok', 145 'title' => Lang::getParmLang(Lang::getLanguageString('extreq'), array($ext)), 146 'desc' => ''); 147 } 148 } 149 150 // check include_path 151 $incPaths = explode((PHP_OS == 'WIN32' || PHP_OS == 'WINNT') ? ";" : ":", ini_get("include_path")); 152 if (! (in_array(".",$incPaths) || in_array("./",$incPaths) || in_array(".\\",$incPaths))){ 153 $_SESSION["SETUP"]["system"] = false; 154 $report[] = array('status' => 'error', 155 'title' => Lang::getLanguageString('incpathreq'), 156 'desc' => Lang::getLanguageString('incpathreqdesc')); 157 } 158 else{ 159 $report[] = array('status' => 'ok', 160 'title' => Lang::getLanguageString('incpathreq'), 161 'desc' => ''); 162 } 163 164 // check memory_limit 165 $mlimit = ini_get('memory_limit'); 166 if (stristr($mlimit,"m")) { 167 $mlimit=doubleval($mlimit)*1024*1024; 168 } elseif (stristr($mlimit,"k")) { 169 $mlimit=doubleval($mlimit)*1024; 170 } 171 if ($mlimit&&$mlimit<$neededMemory*1024*1024) { 172 $_SESSION["SETUP"]["system"] = false; 173 $report[] = array('status' => 'error', 174 'title' => Lang::getParmLang(Lang::getLanguageString('memoryreq'), array($neededMemory)), 175 'desc' => Lang::getParmLang(Lang::getLanguageString('memoryreqdesc'), array($neededMemory)) 176 ); 177 } 178 else{ 179 $report[] = array('status' => 'ok', 180 'title' => Lang::getParmLang(Lang::getLanguageString('memoryreq'), array($neededMemory)), 181 'desc' => ''); 182 } 183 184 // check PHP settings requirements 185 foreach($neededSettings as $set => $v){ 186 if(!ini_get($set) == $v[0]){ 187 if($v[1] == 0){ 188 $_SESSION["SETUP"]["system"] = false; 189 $report[] = array('status' => 'error', 190 'title' => Lang::getParmLang(Lang::getLanguageString('setreq0'), array($set, $v[0])), 191 'desc' => Lang::getParmLang(Lang::getLanguageString('setreqdesc0'), array($set, $v[0]))); 192 } 193 elseif($v[1] == 1){ 194 $report[] = array('status' => 'warning', 195 'title' => Lang::getParmLang(Lang::getLanguageString('setreq1'), array($set, $v[0])), 196 'desc' => Lang::getParmLang(Lang::getLanguageString('setreqdesc1'), array($set, $v[0]))); 197 } 198 elseif($v[1] == 2){ 199 $report[] = array('status' => 'note', 200 'title' => Lang::getParmLang(Lang::getLanguageString('setreq2'), array($set, (int)ini_get($set))), 201 'desc' => Lang::getParmLang(Lang::getLanguageString('setreqdesc2'), array($set, $v[0]))); 202 } 203 } 204 else{ 205 $report[] = array('status' => 'ok', 206 'title' => Lang::getParmLang(Lang::getLanguageString('setreq2'), array($set, $v[0])), 207 'desc' => ''); 208 } 209 } 210 211 // assign results to Smarty 212 $smarty->assign('report', $report); 213 $smarty->assign('status', $_SESSION["SETUP"]['system']); 214} // end install 215 216/* append navigation */ 217$nav = true; 218$smarty->append("nav", array(0=>"prev",1=>Lang::getLanguageString("prev"),2=>1)); 219if($_SESSION["SETUP"]['uninstall'] !== true) 220$smarty->append("subnav", array(0=>"refresh",1=>Lang::getLanguageString("refresh"),2=>1)); 221if ($_SESSION["SETUP"]["system"] === false) 222$smarty->append("nav", array(0=>"next",1=>Lang::getLanguageString("next"),2=>0)); 223else 224$smarty->append("nav", array(0=>"next",1=>Lang::getLanguageString("next"),2=>1)); 225 226?>