Forum Programmation.php Probleme de connection avec un serveur mysql

Posté par  (site web personnel) .
Étiquettes : aucune
0
23
juin
2005
Bonjour,

tout d/abord la config:
Apache 2.0.52
Php 4.3.10
Mysql 4.1.9

J'ai une page php qui me retourne cette erreur:

------
Warning: mysql_connect(): Can't connect to MySQL server on 'Nom_Du_Serveur' (0) in Chemin_Vers_index.php on line 24
Can't connect to MySQL server on 'Nom_Du_Serveur' (0)
------

La ligne 24 dont on parle:

------
$conn = mysql_connect( 'Nom_Du_Serveur', 'rotool', '' ) or die( mysql_error( ) ) ;
mysql_select_db( 'ConQuest', $conn ) or die( mysql_error( ) ) ;
------

Pourtant en ligne de commande sur le serveur web:

------
/opt/php/4.3.10/bin/php Chemin_Vers_index.php
------

la connection semble bien s'effectuer, de meme je peux faire un telnet sur le port 3306 du serveur mysql.

Une idee?

Merci
  • # Normalement...

    Posté par  (site web personnel) . Évalué à 0.

    Normalement ta connexion php NE passe PAS par le réseau, mais par un socket unix (beaucoup plus rapide et secure...).

    Perso j'utilise PEARDB pour ça, et je me prend moi la tête...

    Mon code :
    open_connexion.php

    <?php
    //Inclusion module PEARDB
    require_once 'DB.php';

    //Configuration de la base de donnée
    include "sql.inc.php";

    if (!isset($BASE_OUVERTE))
    $BASE_OUVERTE='false';
    //ouverture de la base de donnée.
    if ($BASE_OUVERTE!='true') {
    $db =& DB::connect($dsn, $options);
    if (DB::isError($db)) {
    /*
    * Ce n'est peut être pas ce que vous aurez envie de
    * faire dans votre programme. Nous le mettons ici juste
    * pour vous montrer comment utiliser l'objet erreur.
    */

    echo 'Erreur : Message Standard : ' . $db->getMessage() . "\n";
    //echo 'Message DBMS/Utilisateur : ' . $db->getUserInfo() . "\n";
    //echo 'Message DBMS/Déboguage : ' . $db->getDebugInfo() . "\n";
    die();
    } else {
    $BASE_OUVERTE='true';
    }
    }
    ?>


    close_connexion.php

    <?php
    //Fermeture de la connection SQL.
    if ($BASE_OUVERTE=='true') {
    $db->disconnect();
    $BASE_OUVERTE='false';
    }
    ?>


    après tu utiliser le modèles expliqué dans la docs là :
    http://pear.php.net/manual/fr/package.database.db.php(...)

    Il te faudra pear installé dans le système d'hebergement, mais si tu a pas un simple ajout de PEARDB dans ton projet suffira (avec quelques changements de chemins a faire...).

    sql.inc.php

    <?php
    //Type de la base SQL (mysql|postgresql|etc...)
    $sql_type="mysql";

    //Nom d'hôte du serveur MySQL
    $sql_host="localhost";

    //Login de la base de donnée
    $sql_login="login";

    //Password de la base de donnée
    $sql_pass="pass";

    //Nom de la base de donnée
    $sql_dbname="dbname";

    $dsn = "$sql_type://$sql_login:$sql_pass@$sql_host/$sql_dbname";
    $options = array(
    'debug' => 2,
    'portability' => DB_PORTABILITY_ALL,
    );
    ?>


    Tout ce bout de code est sous GPL, un simple lien vers mon site (http://www.cathub.org)(...) me va si tu l'utilise...

    D'autre part il est recommandé d'utiliser apache1 avec du php pour des histoires de différence entre fork et thread qui font que avec apache2 ça peux crasher le serveur complètement...
    (ne pas oublier non plus de relancer le serveur régulièrement pour virer les requettes qui ont plantés pour X ou Y)

    ps : dsl pour les identations, les tabs sont passées a la trappe...
    • [^] # Re: Normalement...

      Posté par  (site web personnel) . Évalué à 1.

      Merci pour cette alternative je vais essayer cela de mon cote.

      Malheureusement je ne pense pas que l'utilisateur l'accepte puisqu'avant la connection fontionnait (avant = avant le changement de serveur web).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.