Author: hsanchez Date: 2007-04-09 17:51:53 -0300 (Mon, 09 Apr 2007) New Revision: 4541 Modified: prosistem/alba/trunk/index.php Log: Generando archivo de log para la instalacion, permite un debug de la instalacion en un cliente Modified: prosistem/alba/trunk/index.php =================================================================== --- prosistem/alba/trunk/index.php 2007-04-06 20:19:20 UTC (rev 4540) +++ prosistem/alba/trunk/index.php 2007-04-09 20:51:53 UTC (rev 4541) @@ -45,8 +45,8 @@ define("INSTALL_COMPLETE_DIR",ALBA_PATH."log"); define("INSTALL_COMPLETE_FILE",INSTALL_COMPLETE_DIR.DIRECTORY_SEPARATOR."instalacion_completa"); - - + define("DEBUG_LOG",INSTALL_COMPLETE_DIR.DIRECTORY_SEPARATOR."install.log"); + //define("DEBUG_LOG","install.log"); define("ALBA_WEB",ALBA_PATH."web".DIRECTORY_SEPARATOR); define("CONFIG_PATH", ALBA_PATH."config".DIRECTORY_SEPARATOR); @@ -81,15 +81,23 @@ if(!file_exists(INSTALL_COMPLETE_FILE)) { - + + $fp = fopen(DEBUG_LOG, "at" ); + fputs( $fp,date( "d/m/Y H:m:s")." ---- INICIO DE VERIFICACIONES ----\n\n" ); + if(OS_WINDOWS) { @unlink(ALBA_PATH.".htaccess"); @unlink(INSTALL_DIR."dist/.htaccess"); + fputs( $fp,date( "d/m/Y H:m:s")." SO: Windows \n\n" ); } - + else + fputs( $fp,date( "d/m/Y H:m:s")." SO: Linux \n\n" ); + //muchas veces tarda demasiado por lo que es prudente ponerle un infinito tiempo de ejecucion set_time_limit(0); + + $f_phpversion = function_exists ("phpversion"); $f_apache_get_version = function_exists ("apache_get_version"); @@ -118,8 +126,8 @@ $memory_limit = "No se pudo conocer la cantidad de memoria disponible en su PHP."; $bool_memory_no_chequeo = false; } + fputs( $fp,date( "d/m/Y H:m:s")." memory_limit: $memory_limit\n\n" ); - $bool_cache = tienePermisoEscritura(ALBA_PATH."cache"); $bool_log = tienePermisoEscritura(ALBA_PATH."log"); $bool_upload = tienePermisoEscritura(ALBA_WEB."uploads"); @@ -131,8 +139,10 @@ $msg_phpversion = "Su versión de PHP es ".phpversion(); } else { $msg_phpversion = "No se pudo verificar la versión de PHP"; + } - + fputs( $fp,date( "d/m/Y H:m:s")." phpversion: $msg_phpversion\n\n" ); + if($f_apache_get_version) { preg_match('!Apache/(.*) !U', apache_get_version(), $v); $apache_installed_version = $v[1]; @@ -150,15 +160,17 @@ $msg_apache_get_version = "No se pudo verificar la versión de APACHE"; $msg_mod_rewrite = "( Al no poder verificar la versión de APACHE, tampoco pudo hacerlo para el mod_rewrite )"; } - + fputs( $fp,date( "d/m/Y H:m:s")." apache_get_version: $msg_apache_get_version\n\n" ); + fputs( $fp,date( "d/m/Y H:m:s")." mod_rewrite: $msg_mod_rewrite\n\n" ); + if($f_mysql_module) { $bool_mysql_module = true; $msg_mysql_module = "Tiene instalado el modulo MYSQL en PHP"; - } else { + } else $msg_mysql_module = "No tiene instalado el modulo MYSQL en PHP"; - } + + fputs( $fp,date( "d/m/Y H:m:s")." mysql_module: $msg_mysql_module\n\n" ); - if($f_get_magic_quotes_gpc) { $bool_get_magic_quotes_gpc = get_magic_quotes_gpc(); if(!$bool_get_magic_quotes_gpc) { @@ -170,53 +182,97 @@ } else { $msg_get_magic_quotes_gpc = " No se pudo verificar si usted tiene (magic_quotes_gpc = off) en el php.ini"; } - + fputs( $fp,date( "d/m/Y H:m:s")." magic_quotes: $msg_get_magic_quotes_gpc\n\n" ); + $hasErrors = false; $aError = array(); $aDb = array( 'server' => '', 'user' => '', 'password' => '', 'name' => '', 'createdb' => '' ) ; - if(!file_exists(SQL_CREATE) OR !file_exists(SQL_INSERT_INICIAL) OR !file_exists(SQL_INSERT_EJEMPLO)) { + if(!file_exists(SQL_CREATE)) { $hasErrors = true; - $aError['sql_files'] = 'Algunos de los archivos para el SQL no puede abrirse'; + $aError['sql_files'] = 'El archivo para el SQL no puede abrirse'; + fputs( $fp,date( "d/m/Y H:m:s")." SQL_CREATE: ".$aError['sql_files']."\n\n" ); } - + else + fputs( $fp,date( "d/m/Y H:m:s")." SQL_CREATE: OK \n\n" ); + + if(!file_exists(SQL_INSERT_INICIAL)){ + $hasErrors = true; + $aError['sql_files'] = 'El archivo para el SQL no puede abrirse'; + fputs( $fp,date( "d/m/Y H:m:s")." SQL_INSERT_INICIAL: ".$aError['sql_files']."\n\n" ); + } + else + fputs( $fp,date( "d/m/Y H:m:s")." SQL_INSERT_INICIAL: OK \n\n" ); + + if(!file_exists(SQL_INSERT_EJEMPLO)){ + $hasErrors = true; + $aError['sql_files'] = 'El archivo para el SQL no puede abrirse'; + fputs( $fp,date( "d/m/Y H:m:s")." SQL_INSERT_EJEMPLO: ".$aError['sql_files']."\n\n" ); + } + else + fputs( $fp,date( "d/m/Y H:m:s")." SQL_INSERT_EJEMPLO: OK \n\n" ); + + fputs( $fp,date( "d/m/Y H:m:s")." ---- FIN DE VERIFICACIONES ----\n\n" ); + fputs( $fp,date( "d/m/Y H:m:s")." ---- INICIO DB ----\n\n" ); if ($_SERVER['REQUEST_METHOD'] == "POST") { + + if(!isset($_POST['db']['createdb'])) + $_POST['db']['createdb'] = false; + $db_connection = @mysql_connect( $_POST['db']['server'], $_POST['db']['user'], $_POST['db']['password']); if ($db_connection) { $mysql_server_version = mysql_get_server_info(); + fputs( $fp,date( "d/m/Y H:m:s")." mysql_server_version: ".$mysql_server_version ."\n\n" ); if(compruebaVersion($mysql_server_version, MYSQL_REQUIRED_VERSION)) { if($_POST['db']['createdb']) { + fputs( $fp,date( "d/m/Y H:m:s")." -- Create DB --\n\n" ); if(!@mysql_query('CREATE DATABASE '.$_POST['db']['name'].' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin')) { $hasErrors = true; $aError['newdb'] = 'No se pudo crear la base de datos ('.mysql_error().')'; - $aDb = array( 'server' => $_POST['db']['server'] , 'user' => $_POST['db']['user'], 'password' => $_POST['db']['password'], 'name' => $_POST['db']['name'], 'createdb' => $_POST['db']['createdb']) ; + fputs( $fp,date( "d/m/Y H:m:s")." newdb: ".$aError['newdb']."\n\n" ); + $aDb = array( 'server' => $_POST['db']['server'] , 'user' => $_POST['db']['user'], 'password' => $_POST['db']['password'], 'name' => $_POST['db']['name'], 'createdb' => $_POST['db']['createdb']) ; } else { - if(doInstall()) { + fputs( $fp,date( "d/m/Y H:m:s")." Se creo la base de datos OK--\n\n" ); + if(doInstall($fp)) { + fputs( $fp,date( "d/m/Y H:m:s")." Fin doInstall (create_db): OK \n\n" ); + fclose( $fp ); header("Location: ".REDIRECT_URL); } else { - @mysql_query('DROP DATABASE '.$_POST['db']['name']); - $aError['insert_create'] = 'No se pudo agregar los datos a la base de datos ('.mysql_error().')'; + fputs( $fp,date( "d/m/Y H:m:s")." Fin doInstall (create_db): con Error \n\n" ); + if (!@mysql_query('DROP DATABASE '.$_POST['db']['name'])){ + $aError['insert_create'] = 'No se pudo eliminar la base de datos creada ('.mysql_error().')'; + fputs( $fp,date( "d/m/Y H:m:s")." insert_create (create_db): ".$aError['insert_create']."\n\n" ); + } + else { + $aError['insert_create'] = 'Se elimino la base de datos creada ('.mysql_error().')'; + fputs( $fp,date( "d/m/Y H:m:s")." insert_create (create_db): ".$aError['insert_create']."\n\n" ); + } $hasErrors = true; } } } else { + fputs( $fp,date( "d/m/Y H:m:s")." -- Select DB --\n\n" ); if(@mysql_select_db($_POST['db']['name'])) { - if(doInstall()) { + if(doInstall($fp)) { + fputs( $fp,date( "d/m/Y H:m:s")." Fin doInstall (select_db): OK \n\n" ); + fclose( $fp ); header("Location: ".REDIRECT_URL); } else { - $aError['insert_create'] = 'No se pudo agregar los datos a la base de datos ('.mysql_error().')'; + $aError['insert_create'] = 'No se pudo agregar los datos a la base de datos existente ('.mysql_error().')'; + fputs( $fp,date( "d/m/Y H:m:s")." insert_create (select_db): ".$aError['insert_create']."\n\n" ); $hasErrors = true; } } else { $hasErrors = true; - $aError['currentdb'] = 'No se pudo crear la base de datos ('.mysql_error().')'; + $aError['currentdb'] = 'No se pudo usar la base de datos ('.mysql_error().')'; + fputs( $fp,date( "d/m/Y H:m:s")." currentdb (select_db): ".$aError['currentdb']."\n\n" ); $aDb = array( 'server' => $_POST['db']['server'] , 'user' => $_POST['db']['user'], 'password' => $_POST['db']['password'], 'name' => $_POST['db']['name'], 'createdb' => $_POST['db']['createdb']) ; - } } } else { $hasErrors = true; $aError['mysql_version'] = 'Usted tiene una versión de MYSQL inferior a la'.MYSQL_REQUIRED_VERSION. '(Su versión actual es '.$mysql_server_version. ')'; + fputs( $fp,date( "d/m/Y H:m:s")." mysql_server_version: ".$aError['mysql_version']."\n\n" ); $aDb = array( 'server' => $_POST['db']['server'] , 'user' => $_POST['db']['user'], 'password' => $_POST['db']['password'], 'name' => $_POST['db']['name'], 'createdb' => $_POST['db']['createdb'] ); } @@ -224,11 +280,12 @@ } else { $hasErrors = true; $aError['connect'] = 'No pudo conectarse al Servidor de Base de datos ('.mysql_error().')'; + fputs( $fp,date( "d/m/Y H:m:s")." connect: ".$aError['connect']."\n\n" ); $aDb = array( 'server' => $_POST['db']['server'] , 'user' => $_POST['db']['user'], 'password' => $_POST['db']['password'], 'name' => $_POST['db']['name'], 'createdb' => $_POST['db']['createdb'] ); } } - + fclose( $fp ); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/2000/REC-xhtml1-200000126/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> @@ -332,7 +389,7 @@ </table> -<? if($bool_config AND $bool_upload AND $bool_tmp AND $bool_log AND $bool_cache AND $bool_memory_limit AND $bool_apache_get_version AND $bool_phpversion AND $bool_mysql_module AND $bool_mod_rewrite AND $bool_get_magic_quotes_gpc) { ?> +<?php if($bool_config AND $bool_upload AND $bool_tmp AND $bool_log AND $bool_cache AND $bool_memory_limit AND $bool_apache_get_version AND $bool_phpversion AND $bool_mysql_module AND $bool_mod_rewrite AND $bool_get_magic_quotes_gpc) { ?> <?php if($hasErrors) { ?> <br><br> @@ -484,46 +541,56 @@ return $aSql; } -function executeDump($file, $db) { +function executeDump($file, $db,$fp) { + fputs( $fp,date( "d/m/Y H:m:s")." Entrando ExecuteDump: $file - $db \n\n" ); $aSql = dump2Array($file); $error = false; if(count($aSql) > 0 AND file_exists($file)) { if(mysql_select_db($db)) { + fputs( $fp,date( "d/m/Y H:m:s")." ejecutando BEGIN \n\n" ); mysql_query("BEGIN"); foreach($aSql as $sql_line) { $res = mysql_query(trim($sql_line)); if(!$res) { + fputs( $fp,date( "d/m/Y H:m:s")." Fallo SQL: $sql_line \n\n" ); + fputs( $fp,date( "d/m/Y H:m:s")." error:". mysql_error()." \n\n" ); $error = true; } } if($error == true) { - echo "rollback"; + fputs( $fp,date( "d/m/Y H:m:s")." Se encontraron errores ejecutando ROLLBACK y saliendo \n\n" ); mysql_query("ROLLBACK"); return false; } else { + fputs( $fp,date( "d/m/Y H:m:s")." Sin errores ejecutando COMMIT y saliendo \n\n" ); mysql_query("COMMIT"); return true; } } + else { + fputs( $fp,date( "d/m/Y H:m:s")." Error al seleccionar la base: $db \n\n" ); + return false; + } } else { + fputs( $fp,date( "d/m/Y H:m:s")." Devuele false no ejecuta nada : $db \n\n" ); return false; } } -function doInstall() { +function doInstall($fp) { global $_POST; - + fputs( $fp,date( "d/m/Y H:m:s")." Entrando doInstall() \n\n" ); //verifica que base de datos instalar si la del ejemplo o solamente la //de los datos_desde_cero iniciales switch($_POST['db']['datos']) { - case 'ejemplo': $sql_insert = SQL_INSERT_INICIAL; break; - case 'minimos': + case "ejemplo": $sql_insert = SQL_INSERT_INICIAL; break; + case "minimos": $sql_insert = SQL_INSERT_EJEMPLO; break; default: $sql_insert = SQL_INSERT_EJEMPLO; } - - if(executeDump(SQL_CREATE, $_POST['db']['name'])) { - if(executeDump($sql_insert, $_POST['db']['name'])) { + fputs( $fp,date( "d/m/Y H:m:s")." Utilizando SQL: $sql_insert \n\n" ); + if(executeDump(SQL_CREATE, $_POST['db']['name'],$fp)) { + if(executeDump($sql_insert, $_POST['db']['name'],$fp)) { $aReemplazo = array( 'USERDB' => $_POST['db']['user'], 'PASSDB' => $_POST['db']['password'], 'SERVER' => $_POST['db']['server'], 'DBNAME'=> $_POST['db']['name']); $contenido_archivo = reemplzarArchivo(DATABASE_CONFIG_DIST,$aReemplazo); file_put_contents(DATABASE_CONFIG, $contenido_archivo); @@ -538,8 +605,8 @@ _symlink(INSTALL_DIR."dist/phing.sandbox/", ALBA_PATH."lib/phing"); _symlink(INSTALL_DIR."dist/".SYMFONY_DIR."/lib/", ALBA_PATH."lib/symfony"); _symlink(INSTALL_DIR."alba/data/symfony/web/sf/", ALBA_WEB."sf"); + fputs( $fp,date( "d/m/Y H:m:s")." Creando Links \n\n" ); - $rewrite_path = (OS_WINDOWS)?CURRENT_WEB_DIR.SYMFONY_WINDOWS_WEB_DIR:CURRENT_WEB_DIR.SYMFONY_WEB_DIR; if(!OS_WINDOWS) @@ -548,13 +615,14 @@ $aReemplazo = Array('REWRITE_PATH' => $rewrite_path); $contenido_archivo = reemplzarArchivo(HTACCESS_DIST,$aReemplazo); file_put_contents(HTACCESS, $contenido_archivo); - touch(INSTALL_COMPLETE_FILE); - + fputs( $fp,date( "d/m/Y H:m:s")." Creando bandera INSTALL_COMPLETE_FILE \n\n" ); return true; } + fputs( $fp,date( "d/m/Y H:m:s")." Fallo ejecutando: $sql_insert \n\n" ); return false; } else { + fputs( $fp,date( "d/m/Y H:m:s")." Fallo ejecutando: SQL_CREATE \n\n" ); return false; }