|
|
Il y a actuellement 305 tutoriaux sur Aidoforum. Toute reproduction, partielle ou complète, est interdite.
Retour aux tutoriaux.
|
| PhpBB -> Could not connect to the Database |
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 :
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:
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
<?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>
|
|
| Par Zorik, le 25 Octobre 2004 à 10h10 |
| /!\ Vous devez être inscrit pour pouvoir commenter ce tutoriel, ou demander du support. /!\ |
|
|
|
|
|