| Auteur |
Message |
Processeur
Messages: 274
Tutoriaux : 0
|
Posté le:
Lun 25 Oct 2004 09:14 Sujet : Could not connect to database [lors de l'install seulement] |
  |
Le répertoire contrib contient un fichier php nommé dbinformer.php, voici ci-dessous le détail de son
utilisation.
Ce script est très utile et peut aider dans de nombreuses situations.
De nombreuses personnes recoivent un message d'erreur :
| Citation: | | could not
connect to database |
ce message survient souvent lors de l'installation, le script ci-dessous a été créé par l'équipe de
support de phpbb.com.
Pour l'utiliser, copiez le code, créez un fichier php vide, collez ce code et enregistrez le fichier
avec le nom que vous voulez (exemple : infodb.php).
Envoyez-le par FTP à la racine de votre forum et appelez-le depuis votre navigateur en tapant
l'adresse:
| Citation: | | http://www.votre_site.xxx/infodb.php |
Entrez les données demandées sélectionnez le type de base de données dans le menu déroulant et
envoyez en cliquant sur le bouton.
Le script vous indiquera si la connexion à votre base de données a réussi ou si il a échoué et vous
indiquera la raison de l'échec.
Pour savoir si votre serveur utilise mysql3 ou mysql4, vous pouvez essayer les 2 solutions, celle
qui ne sera pas valide vous renverra un message d'erreur.
Si la connexion réussi, le script affichera la liste de vos tables, les tables dont le préfixe
correspond à celui que vous avez indiqué seront affichées en caractères gras.
Vous pouvez aussi choisir de créer un fichier config (utile si votre fichier original a été effacé
ou non envoyé, ou endommagé.......).
Pour créer ce fichier config vous avez 2 solutions :
Copier le code affiché en bas de page, ce code contient exactement 19 lignes en comptant les lignes
vides, et collez le dans un nouveau fichier php vide et enregistrez-le sous config.php
Ou alors, cliquez sur le bouton "Download" pour télécharger un fichier config.php prêt à l'emploi et
enregistrez-le sur votre disque dur.
Il ne vous reste plus qu'à envoyer ce fichier à la racine de votre forum.
Pensez aussi à effacer ce script de votre FTP lorsque vous avez fini de l'utiliser et ce, pour des
raisons de sécurité évidentes
| Code: | <?php
/********************************************
*
dbinformer.php
*
-------------------
* begin : Saturday, May 05,
2002
* copyright : (C) 2002 The phpBB
Group
* email : n/a
*
* $Id: dbinformer.php,v 1.65 2002/05/04 12:15:00 Blade Exp $
*
* Coded by AL, Techie-Micheal, Blade, and Black Fluffy Lion.
* http://www.phpbb.com/phpBB/groupcp.php?g=7330
*
**********************************************/
/*********************************************
*
* 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.
*
**********************************************/
/* magic quotes, borrowed from install.php */
set_magic_quotes_runtime(0);
if (!get_magic_quotes_gpc())
{
if (is_array($HTTP_POST_VARS))
{
while (list($k, $v) = each($HTTP_POST_VARS))
{
if (is_array($HTTP_POST_VARS[$k]))
{
while (list($k2, $v2) =
each($HTTP_POST_VARS[$k]))
{
$HTTP_POST_VARS[$k][$k2] = addslashes($v2);
}
@reset($HTTP_POST_VARS[$k]);
}
else
{
$HTTP_POST_VARS[$k] =
addslashes($v);
}
}
@reset($HTTP_POST_VARS);
}
}
$all_connected = false;
$error = false;
$error_msg = '';
$select = false;
$connect = false;
function make_config($dbms, $dbhost, $dbname, $dbuser, $dbpasswd, $table_prefix)
{
$config_file = '<?php<br />' . "\n";
$config_file .= '<br />' . "\n";
$config_file .= '//<br />' . "\n";
$config_file .= '// phpBB 2.x auto-generated config file<br />' .
"\n";
$config_file .= '// Do not change anything in this file!<br />' .
"\n";
$config_file .= '//<br />' . "\n";
$config_file .= '<br />' . "\n";
$config_file .= '$dbms = \'' . $dbms . '\';<br /><br />' .
"\n\n";
$config_file .= '$dbhost = \'' . $dbhost . '\';<br />' . "\n";
$config_file .= '$dbname = \'' . $dbname . '\';<br />' . "\n";
$config_file .= '$dbuser = \'' . $dbuser . '\';<br />' . "\n";
$config_file .= '$dbpasswd = \'' . $dbpasswd . '\';<br /><br />' .
"\n\n";
$config_file .= '$table_prefix = \'' . $table_prefix . '\';<br /><br />' .
"\n\n";
$config_file .= 'define(\'PHPBB_INSTALLED\', true);<br /><br />' .
"\n\n";
$config_file .= '?>';
return $config_file;
}
function make_download($dbms, $dbhost, $dbname, $dbuser, $dbpasswd, $table_prefix)
{
$config_file = '<?php' . "\n\n";
$config_file .= '//' . "\n";
$config_file .= '// phpBB 2.x auto-generated config file' . "\n";
$config_file .= '// Do not change anything in this file!' . "\n";
$config_file .= '//' . "\n\n";
$config_file .= '$dbms = \'' . $dbms . '\';' . "\n\n";
$config_file .= '$dbhost = \'' . $dbhost . '\';' . "\n";
$config_file .= '$dbname = \'' . $dbname . '\';' . "\n";
$config_file .= '$dbuser = \'' . $dbuser . '\';' . "\n";
$config_file .= '$dbpasswd = \'' . $dbpasswd . '\';' . "\n\n";
$config_file .= '$table_prefix = \'' . $table_prefix . '\';' . "\n\n";
$config_file .= 'define(\'PHPBB_INSTALLED\', true);' . "\n\n";
$config_file .= '?>';
return $config_file;
}
/* make all the vars safe to display in form inputs and on the user's screen. Borrowed from
usercp_register.php */
$check_var_list = array('dbms' => 'dbms', 'dbhost' => 'dbhost', 'dbname' => 'dbname',
'dbuser' => 'dbuser', 'dbpasswd' => 'dbpasswd', 'table_prefix' => 'table_prefix');
while (list($var, $param) = each($check_var_list))
{
if (!empty($HTTP_POST_VARS[$param]))
{
$$var =
stripslashes(htmlspecialchars(strip_tags($HTTP_POST_VARS[$param])));
}
}
$available_dbms = array(
'mysql' => 'MySQL 3.x',
'mysql4' => 'MySQL 4.x',
'postgres' => 'PostgreSQL 7.x',
'mssql' => 'MS SQL Server 7/2000',
'msaccess' => 'MS Access [ ODBC ]',
'mssql-odbc' => 'MS SQL Server [ OBDC ]',
);
if (isset($HTTP_POST_VARS['download_config']) &&
$HTTP_POST_VARS['download_config'] == true &&
isset($HTTP_POST_VARS['submit_download_config']) &&
$HTTP_POST_VARS['submit_download_config'] == 'Download')
{
/* borrowed from install.php */
header('Content-Type: text/x-delimtext; name="config.php"');
header('Content-disposition: attachment; filename=config.php');
echo make_download($dbms, $dbhost, $dbname, $dbuser, $dbpasswd,
$table_prefix);
return;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>phpBB :: dbinformer.php</title>
<link rel="stylesheet" href="templates/subSilver/subSilver.css"
type="text/css" />
<style type="text/css">
<!--
p,ul,td {font-size:10pt;}
h3 {font-size:12pt;color:blue}
//-->
</style>
</head>
<body>
<table width="100%" border="0" cellspacing="0"
cellpadding="10" align="center">
<tr>
<td class="bodyline"><table width="100%" border="0"
cellspacing="0" cellpadding="0">
<tr>
<td>
<table width="100%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td><img src="templates/subSilver/images/logo_phpBB.gif" border="0"
alt="phpBB2 : Creating Communities" vspace="1" /></a></td>
<td align="center" width="100%" valign="middle"><span
class="maintitle">dbinformer.php</span>
</td>
</tr>
</table>
<br /><b><div align="center">
<a href="#what">Vos infos</a> |
<a href="#connect">Connexion à la base de données</a> |
<a href="#tables">Tables dans la base de données</a> |
<a href="#config">Fichier Config</a>
</b></div>
<table width="100%" border="0" cellspacing="0"
cellpadding="10" align="center">
<tr>
<td align="center" width="100%" valign="middle"><span
class="maintitle"></span></td>
</tr>
<tr>
<td width="100%">
<table width="100%" cellpadding="2" cellspacing="1"
border="0" class="forumline">
<tr>
<th colspan="2">Configuration Base de Données</th>
</tr>
<tr>
<td class="row1" align="right"><span class="gen">Type de
Base de Données: </span></td>
<td class="row2">
<form action="<?php echo $HTTP_SERVER_VARS['PHP_SELF']; ?>"
method="post">
<select name="dbms">
<?php
/* loop through the dbms, with the correct one selected (hopefully!) */
while (list($var, $param) = each($available_dbms))
{
$selected = ($dbms == $var) ? ' selected="selected"' : '';
echo '<option value="' . $var . '"' . $selected . '>' . $param .
'</option>';
}
?>
</select></td>
</tr>
<tr>
<td class="row1" align="right"><span class="gen">Nom de
serveur de la base de données: </span></td>
<td class="row2"><input type="text" name="dbhost"
value="<?php echo @$dbhost; ?>" /></td>
</tr>
<tr>
<td class="row1" align="right"><span class="gen">Nom de
votre base de données: </span></td>
<td class="row2"><input type="text" name="dbname"
value="<?php echo @$dbname; ?>" /></td>
</tr>
<tr>
<td class="row1" align="right"><span class="gen">Nom
d'utilisateur de la base de données: </span></td>
<td class="row2"><input type="text" name="dbuser"
value="<?php echo @$dbuser; ?>" /></td>
</tr>
<tr>
<td class="row1" align="right"><span class="gen">Mot de
passe de la base de données: </span></td>
<td class="row2"><input type="password" name="dbpasswd"
value="<?php echo @$dbpasswd; ?>" /></td>
</tr>
<tr>
<td class="row1" align="right"><span
class="gen">Choisissez le préfixe des tables (exemple <b>phpbb_
</b>): </span></td>
<td class="row2"><input type="text" name="table_prefix"
value="<?php echo @$table_prefix; ?>" /></td>
</tr>
<tr>
<td class="row1" align="right"><span
class="gen"><b>Créer un fichier config.php:
</b></span></td>
</td>
<td class="row2"><input type="checkbox"
name="generate_config" value="true" <?php $checked =
(isset($HTTP_POST_VARS['generate_config']) &&
$HTTP_POST_VARS['generate_config'] == true) ? 'checked="checked"' : '';
echo $checked; ?> /></td>
</tr>
<tr>
<td class="catbottom" align="center" colspan="2">
<input class="mainoption" type="submit" name="submit"
value="Submit" /></td>
</tr>
</form></td>
</tr>
</table>
<?php
if (!isset($HTTP_POST_VARS['submit']))
{
echo '<br />SVP entrez vos données.<br />';
}
else
{
/* dbal added by Techie-Micheal [and then obliterated by BFL]. weeeeeee! */
switch ($dbms)
{
case 'mysql':
if (function_exists(@mysql_connect))
{
$db = array(
'choice' => 'MySQL 3.x',
'connect' =>
@mysql_connect($dbhost, $dbuser, $dbpasswd),
'select' =>
@mysql_select_db($dbname),
'error' =>
@mysql_error(),
'list' =>
@mysql_list_tables($dbname),
'fetch' =>
@mysql_fetch_row,
'close' =>
@mysql_close()
);
}
else
{
$error = true;
$error_msg = 'Les fonctions requises pour
effectuer cette opération ne sont pas disponibles pour ' . $available_dbms[$dbms] . '.';
}
break;
case 'mysql4':
if (function_exists(@mysql_connect))
{
$db = array(
'choice' => 'MySQL 4.x',
'connect' =>
@mysql_connect($dbhost, $dbuser, $dbpasswd),
'select' =>
@mysql_select_db($dbname),
'error' =>
@mysql_error(),
'list' =>
@mysql_list_tables($dbname),
'fetch' =>
@mysql_fetch_row,
'close' =>
@mysql_close()
);
}
else
{
$error = true;
$error_msg = 'Les fonctions requises pour
effectuer cette opération ne sont pas disponibles pour ' . $available_dbms[$dbms] . '.';
}
break;
case 'msaccess':
if (function_exists(@odbc_connect))
{
$db = array(
'choice' => 'MS Access
[ ODBC ]',
'connect' =>
@odbc_connect($dbhost, $dbuser, $dbpasswd),
'select' => 'na',
'error' =>
@odbc_errormsg(),
'list' => 'na', /*
odbc_tables() */
'fetch' => 'na', /*
odbc_fetch_row(), odbc_result_all() */
'close' =>
@odbc_close()
);
}
else
{
$error = true;
$error_msg = 'Les fonctions requises pour
effectuer cette opération ne sont pas disponibles pour ' . $available_dbms[$dbms] . '.';
}
break;
case 'postgres':
if (function_exists(@pg_connect))
{
$db = array(
'choice' => 'PostgreSQL
7.x',
'connect' =>
@pg_connect('host=' . $dbhost . ' user=' . $dbuser . ' dbname=' . $dbname . ' password=' .
$dbpasswd),
'select' => 'na',
'error' =>
@pg_last_error(),
'list' =>
@pg_exec("SELECT relname FROM pg_class WHERE relkind = 'r' AND relname NOT LIKE
'pg\_%'"), /* provided by SuGa */
'fetch' => @pg_fetch_row,
'close' =>
@pg_close()
);
}
else
{
$error = true;
$error_msg = 'Les fonctions requises pour
effectuer cette opération ne sont pas disponibles pour ' . $available_dbms[$dbms] . '.';
}
break;
case 'mssql':
if (function_exists(@mssql_connect))
{
$db = array(
'choice' => 'MS SQL Server
7/2000',
'connect' =>
@mssql_connect($dbhost, $dbuser, $dbpasswd),
'select' =>
@mssql_select_db($dbname),
'error' =>
@mssql_get_last_message(),
'list' => 'na',
'fetch' => 'na', /*
mssql_fetch_row() */
'close' =>
@mssql_close()
);
}
else
{
$error = true;
$error_msg = 'Les fonctions requises pour
effectuer cette opération ne sont pas disponibles pour ' . $available_dbms[$dbms] . '.';
}
break;
case 'mssql-odbc':
if (function_exists(@odbc_connect))
{
$db = array(
'choice' => 'MS SQL Server
[ ODBC ]',
'connect' =>
@odbc_connect($dbhost, $dbuser, $dbpasswd),
'select' => 'na',
'error' =>
@odbc_errormsg(),
'list' => 'na', /*
odbc_tables() */
'fetch' => 'na', /*
odbc_fetch_row(), odbc_result_all() */
'close' =>
@odbc_close()
);
}
else
{
$error = true;
$error_msg = 'Les fonctions requises pour
effectuer cette opération ne sont pas disponibles pour ' . $available_dbms[$dbms] . '.';
}
break;
default:
$error = true;
$error_msg = 'DB non reconnue.';
break;
}
if ($error == true && $error_msg != '')
{
echo '<br /><b>ERREUR:</b> ' . $error_msg .
'<br />';
}
else
{
echo '<a name="what"><h3><u>Vos
infos</u></h3></a>';
echo 'Type de base de données: <b>' .
$db['choice'] . '</b><br />';
echo 'Nom du serveur de la base de données: <b>' . $dbhost .
'</b><br />';
echo 'Nom de la base de données: <b>' . $dbname .
'</b><br />';
echo 'Nom de l\'utilisateur de la base de données: <b>' .
$dbuser . '</b><br />';
echo 'Mot de passe de la base de données: <b>' .
$dbpasswd . '</b><br />';
echo '<a name="connect"><h3><u>Connexion à
la base de données</u></h3></a>';
if (!$db['connect'])
{
echo 'Vous n\'avez pas établi la connexion à <b>' .
$db['choice'] . '</b>.<br />';
echo '<b>ERREUR:</b> <i>' .
$db['error'] . '</i><br /><br />';
}
else
{
echo 'Vous avez établi la connexion à <b>' .
$db['choice'] . '</b>.<br /><br />';
$connect = true;
}
if ($dbms == 'msaccess' || $dbms == 'postgres' || $dbms ==
'mssql-odbc')
{
/* for dbmses which have no db select function */
$select = true;
}
else
{
if (!$db['select'])
{
echo 'Votre base de données n\'a pas été
trouvée.<br />';
echo '<b>ERREUR:</b>
<i>' . $db['error'] . '</i><br />';
}
else
{
echo 'Votre base de données a bien été
trouvée.<br />';
$select = true;
}
}
if ($connect == true && $select == true)
{
echo '<a
name="tables"><h3><u>Tables da ns la base de
données</u></h3></a>';
if ($dbms == 'mysql' || $dbms == 'mysql4' || $dbms ==
'postgres')
{
echo '<i>Les tables comportant le
préfixe que vous avez spécifié sont indiquées en gras.</i>';
echo '<ul>';
while ($table =
$db['fetch']($db['list']))
{
/* Highlight tables with the
table_prefix specified */
if
(preg_match("/^$HTTP_POST_VARS[table_prefix]/i",
$table[0]))
{
echo
'<li><b>' . $table[0] . '</b></li><br />';
}
else
{
echo
'<li>' . $table[0] . '</li><br />';
}
}
echo '</ul>';
}
else
{
echo 'Désolé, cette fonction n\'est pas
disponible avec ' . $db['choice'] . '.';
}
/* defined a var which is only there if successfully
connected to the database and the database is found */
$all_connected = true;
}
/* Create a config file if checked and if the connection went OK */
if (isset($HTTP_POST_VARS['generate_config'])
&& $HTTP_POST_VARS['generate_config'] == true)
{
echo '<a
name="config"><h3><u>Fichier Config</u></h3></a>';
if ($all_connected != true)
{
echo 'La connexion à la base de données à
échoué, aucun fichier config n\'a pu être créé.<br />';
}
else
{
echo 'Copiez les <b>19</b>
lignes ci-dessous et enregistrez-les dans un fichier <u>config.php</u> ou cliquez sur le
bouton <u>Download</u> ci-dessous pour télécharger le fichier config tout prêt.<br
/>Envoyez ce fichier à la racine de votre forum.<br />Assurez-vous qu\'il n\'y a rien du
tout après le <u>?></u> (ceci inclus aussi les espaces ou retour à la
ligne).<br>Votre fichier doit contenir uniquement les 19 lignes ci-dessous, rien de plus
et rien de moins<br /><br />';
/* Create our config file */
echo '<form action="' .
$HTTP_SERVER_VARS['PHP_SELF'] . '" method="post"><table
cellspacing="1" cellpadding="3" border="0"><tr><td
class="code">';
echo make_config($dbms, $dbhost,
$dbname, $dbuser, $dbpasswd, $table_prefix);
echo '</td></tr></table>';
echo '<input type="hidden"
name="dbms" value="' . $dbms . '" />';
echo '<input type="hidden"
name="dbhost" value="' . $dbhost . '" />';
echo '<input type="hidden"
name="dbname" value="' . $dbname . '" />';
echo '<input type="hidden"
name="dbuser" value="' . $dbuser . '" />';
echo '<input type="hidden"
name="dbpasswd" value="' . $dbpasswd . '" />';
echo '<input type="hidden"
name="table_prefix" value="' . $table_prefix . '" />';
echo '<input type="hidden"
name="download_config" value="true" />';
echo '<br /><input
type="submit" name="submit_download_config" value="Download"
class="mainoption" /><br />';
}
}
/* close the connection */
if ($all_connected == true)
{
$db['close'];
}
}
}
/* And they all lived happily ever after...
The End */
?>
<br /><a href="javascript:scrollTo('0','0');"><b>Retour en
haut de la page</b></a>
</td>
</tr>
</table>
<div align="center"><span class="copyright">© Copyright
2002 The <a href="http://www.phpbb.com/about.php" target="_phpbb"
class="copyright"><b>phpBB Group</b></a><br />Traduction <a
href="http://www.breakobus.net" target="_phpbb"
class="copyright"><b>Breakolami</b></a></span></div>
</td>
</tr>
</table>
</body>
</html> |
|
Dernière édition par Zorik21 le Mar 26 Oct 2004 09:56; édité 3 fois |
|
   |
 |
|
|
|
|
|