* Copyright (C) 2004-2008 Laurent Destailleur * Copyright (C) 2004 Benoit Mortier * Copyright (C) 2004 Sebastien Di Cintio * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /** \file htdocs/install/etape1.php \ingroup install \brief Génère le fichier conf.php avec les informations issues de l'étape précédente \version $Id$ */ define('DONOTLOADCONF',1); // To avoid loading conf by file inc..php include("./inc.php"); $setuplang=isset($_POST["selectlang"])?$_POST["selectlang"]:(isset($_GET["selectlang"])?$_GET["selectlang"]:'auto'); $langs->setDefaultLang($setuplang); $langs->load("admin"); $langs->load("install"); // Init "forced values" to nothing. "forced values" are used after an doliwamp install wizard. if (file_exists("./install.forced.php")) include_once("./install.forced.php"); dolibarr_install_syslog("etape1: Entering etape1.php page"); /* * View */ pHeader($langs->trans("ConfigurationFile"),"etape2"); $error = 0; // Répertoire des pages dolibarr $main_dir=isset($_POST["main_dir"])?trim($_POST["main_dir"]):''; // On supprime / de fin dans main_dir if (substr($main_dir, strlen($main_dir) -1) == "/") { $main_dir = substr($main_dir, 0, strlen($main_dir)-1); } // On supprime / de fin dans main_url if (substr($_POST["main_url"], strlen($_POST["main_url"]) -1) == "/") { $_POST["main_url"] = substr($_POST["main_url"], 0, strlen($_POST["main_url"])-1); } // Répertoire des documents générés (factures, etc...) $main_data_dir=isset($_POST["main_data_dir"])?$_POST["main_data_dir"]:''; if (! $main_data_dir) { $main_data_dir="$main_dir/documents"; } /* * Actions */ if ($_POST["action"] == "set") { umask(0); print '

'.$langs->trans("ConfigurationFile").'

'; print ''; // Verification validite parametre main_dir if (! $error) { if (! is_dir($main_dir)) { dolibarr_install_syslog("etape1: Repertoire '".$main_dir."' inexistant ou non accessible"); print ""; $error++; } } // Sauvegarde fichier configuration if (! $error) { $fp = fopen("$conffile", "w"); if($fp) { clearstatcache(); fputs($fp, ''); fclose($fp); if (file_exists("$conffile")) { include("$conffile"); // On force rechargement. Ne pas mettre include_once ! conf($dolibarr_main_document_root); print ""; } else { $error++; } } // Chargement driver acces bases require_once($dolibarr_main_document_root."/lib/databases/".$dolibarr_main_db_type.".lib.php"); } /*************************************************************************** * Creation des répertoires ***************************************************************************/ // Creation des sous-répertoires main_data_dir if (! $error) { dolibarr_install_syslog("etape1: Directory '".$main_dir."' exists"); // Répertoire des documents if (! is_dir($main_data_dir)) { create_exdir($main_data_dir); } if (! is_dir($main_data_dir)) { print ""; print ''; $error++; } else { // Les documents sont en dehors de htdocs car ne doivent pas pouvoir etre téléchargés en passant outre l'authentification $dir[0] = "$main_data_dir/facture"; $dir[1] = "$main_data_dir/users"; $dir[2] = "$main_data_dir/propale"; $dir[3] = "$main_data_dir/societe"; $dir[4] = "$main_data_dir/ficheinter"; $dir[5] = "$main_data_dir/produit"; $dir[6] = "$main_data_dir/rapport"; $dir[7] = "$main_data_dir/rss"; $dir[8] = "$main_data_dir/logo"; // Boucle sur chaque répertoire de dir[] pour les créer s'ils nexistent pas for ($i = 0 ; $i < sizeof($dir) ; $i++) { if (is_dir($dir[$i])) { dolibarr_install_syslog("etape1: Directory '".$dir[$i]."' exists"); } else { if (create_exdir($dir[$i]) < 0) { print ""; $error++; } else { dolibarr_install_syslog("etape1: Directory '".$dir[$i]."' created"); } } } } } /** * Création des Bases de données */ if (! $error) { conf($dolibarr_main_document_root ); $userroot=isset($_POST["db_user_root"])?$_POST["db_user_root"]:""; $passroot=isset($_POST["db_pass_root"])?$_POST["db_pass_root"]:""; /** * Si creation utilisateur admin demandée, on le crée */ if (isset($_POST["db_create_user"]) && $_POST["db_create_user"] == "on") { dolibarr_install_syslog("etape1: Creation de l'utilisateur: ".$dolibarr_main_db_user); //print $conf->db->host." , ".$conf->db->name." , ".$conf->db->user." , ".$conf->db->pass." , ".$conf->db->port; $databasefortest=$conf->db->name; if ($conf->db->type == 'mysql' || $conf->db->type == 'mysqli') { $databasefortest='mysql'; } else if ($conf->db->type == 'pgsql') { $databasefortest='postgres'; } else if ($conf->db->type == 'mssql') { $databasefortest='mssql'; } // Creation handler de base, verification du support et connexion $db = new DoliDb($conf->db->type,$conf->db->host,$userroot,$passroot,$databasefortest,$conf->db->port); if ($db->error) { print '
'.$db->error.'
'; $error++; } if (! $error) { if ($db->connected) { $result=$db->DDLCreateUser($dolibarr_main_db_host,$dolibarr_main_db_user,$dolibarr_main_db_pass); if ($result > 0) { print ''; print ''; } else { if ($db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { dolibarr_install_syslog("etape1: User already exists"); print ''; print ''; } else { dolibarr_install_syslog("etape1: Failed to create user"); print ''; print '"; } } $db->close(); } else { print ''; print ''; print ''; // Affiche aide diagnostique print ''; $error++; } } } // Fin si "creation utilisateur" /* * Si creation database demandée, on la crée */ if (! $error && (isset($_POST["db_create_database"]) && $_POST["db_create_database"] == "on")) { dolibarr_install_syslog("etape1: Creation de la base : ".$dolibarr_main_db_name); $db = new DoliDb($conf->db->type,$conf->db->host,$userroot,$passroot,'',$conf->db->port); if ($db->connected) { if ($db->DDLCreateDb($dolibarr_main_db_name)) { print ''; print ""; } else { print ''; print ''; // Affiche aide diagnostique print ''; $error++; } $db->close(); } else { print ''; print ''; print ''; // Affiche aide diagnostique print ''; $error++; } } // Fin si "creation database" /* * On test maintenant l'accès par le user admin dolibarr */ if (! $error) { dolibarr_install_syslog("etape1: connexion de type=".$conf->db->type." sur host=".$conf->db->host." port=".$conf->db->port." user=".$conf->db->user." name=".$conf->db->name); //print "connexion de type=".$conf->db->type." sur host=".$conf->db->host." port=".$conf->db->port." user=".$conf->db->user." name=".$conf->db->name; $db = new DoliDb($conf->db->type,$conf->db->host,$conf->db->user,$conf->db->pass,$conf->db->name,$conf->db->port); if ($db->connected == 1) { // si accès serveur ok et accès base ok, tout est ok, on ne va pas plus loin, on a même pas utilisé le compte root. if ($db->database_selected == 1) { dolibarr_install_syslog("etape1: la connexion au serveur par le user ".$conf->db->user." est reussie"); print ""; dolibarr_install_syslog("etape1: la connexion a la base : ".$conf->db->name.",par le user : ".$conf->db->user." est reussie"); print ""; $error = 0; } else { dolibarr_install_syslog("etape1: la connexion au serveur par le user ".$conf->db->user." est reussie"); print ""; dolibarr_install_syslog("etape1: la connexion a la base ".$conf->db->name.",par le user ".$conf->db->user." a échoué"); print ""; // Affiche aide diagnostique print ''; $error++; } } else { dolibarr_install_syslog("etape1: la connexion au serveur par le user ".$conf->db->user." est rate"); print ""; // Affiche aide diagnostique print ''; $error++; } } } print '
"; print $langs->trans("ErrorDirDoesNotExists",$main_dir).'
'; print $langs->trans("ErrorWrongValueForParameter",$langs->trans("WebPagesDirectory")).'
'; print $langs->trans("ErrorGoBackAndCorrectParameters").'

'; print '
'; print $langs->trans("Error"); print "
"; print $langs->trans("SaveConfigurationFile"); print ""; print $langs->trans("OK"); print "
".$langs->trans("ErrorDirDoesNotExists",$main_data_dir); print $langs->trans("YouMustCreateItAndAllowServerToWrite"); print ''; print ''.$langs->trans("Error").''; print "

'.$langs->trans("CorrectProblemAndReloadPage",$_SERVER['PHP_SELF'].'?testget=ok').'
"; print "Failed to create directory: ".$dir[$i]; print ''; print $langs->trans("Error"); print "
'; print $langs->trans("UserCreation").' : '; print $dolibarr_main_db_user; print ''.$langs->trans("OK").'
'; print $langs->trans("UserCreation").' : '; print $dolibarr_main_db_user; print ''.$langs->trans("LoginAlreadyExists").'
'; print $langs->trans("UserCreation").' : '; print $dolibarr_main_db_user; print ''.$langs->trans("Error").' '.$db->error()."
'; print $langs->trans("UserCreation").' : '; print $dolibarr_main_db_user; print ''.$langs->trans("Error").'

'; print $langs->trans("YouAskDatabaseCreationSoDolibarrNeedToConnect",$dolibarr_main_db_user,$dolibarr_main_db_host,$userroot); print '
'; print $langs->trans("BecauseConnectionFailedParametersMayBeWrong").'

'; print $langs->trans("ErrorGoBackAndCorrectParameters").'

'; print '
'; print $langs->trans("DatabaseCreation").' : '; print $dolibarr_main_db_name; print '".$langs->trans("OK")."
'; print $langs->trans("DatabaseCreation").' : '; print $dolibarr_main_db_name; print ''.$langs->trans("Error").' '.$db->errno().'

'; print $langs->trans("ErrorFailedToCreateDatabase",$dolibarr_main_db_name).'
'; print $langs->trans("IfDatabaseExistsGoBackAndCheckCreate"); print '
'; print '
'; print $langs->trans("DatabaseCreation").' : '; print $dolibarr_main_db_name; print ''.$langs->trans("Error").'

'; print $langs->trans("YouAskDatabaseCreationSoDolibarrNeedToConnect",$dolibarr_main_db_user,$dolibarr_main_db_host,$userroot); print '
'; print $langs->trans("BecauseConnectionFailedParametersMayBeWrong").'

'; print $langs->trans("ErrorGoBackAndCorrectParameters").'

'; print '
"; print $langs->trans("ServerConnection")." : "; print $dolibarr_main_db_host; print ""; print $langs->trans("OK"); print "
"; print $langs->trans("DatabaseConnection")." : "; print $dolibarr_main_db_name; print ""; print $langs->trans("OK"); print "
"; print $langs->trans("ServerConnection")." : "; print $dolibarr_main_db_host; print ""; print $langs->trans("OK"); print "
"; print $langs->trans("DatabaseConnection")." : "; print $dolibarr_main_db_name; print ''; print $langs->trans("Error"); print "

Vérifier que le nom de base "'.$dolibarr_main_db_name.'" est correct.
'; print 'Si ce nom est correct et que cette base n\'existe pas déjà, vous devez cocher l\'option "Créer la base de donnée".
'; print $langs->trans("ErrorGoBackAndCorrectParameters").'

'; print '
"; print $langs->trans("ServerConnection")." : "; print $dolibarr_main_db_host; print ''; print ''.$db->error.''; print "

Le serveur "'.$conf->db->host.'", nom de base "'.$conf->db->name.'", login "'.$conf->db->user.'", ou mot de passe "'.$conf->db->pass.'" de la base de donnée est peut-être incorrect ou la version du client PHP trop ancienne par rapport à la version de la base de donnée.
'; print 'Si le login n\'existe pas encore, vous devez cocher l\'option "Créer l\'utilisateur".
'; print $langs->trans("ErrorGoBackAndCorrectParameters").'

'; print '
'; } pFooter($error,$setuplang); ?>