Problème d'utilisation de DSN avec socket (PHP &PEAR)

Problème d'utilisation de DSN avec socket (PHP &PEAR) - PHP - Programmation

Marsh Posté le 10-06-2010 à 14:15:32    

Bonjour à tous ,
Hébergeur : 1and1
version PHP : 5.2.13  
version Mysql : 5.0
 
 Mon problème est le suivant :
 
      Lors de mes accès à la base de données de mon site  j'ai besoin d'utiliser des DSN plutôt que des variables. Cela est du au faite que j'utilise PEAR et que cette ensemble de bibliothèque n'accepte que les DSN pour des raisons qui n'ont pas d'importance dans ce sujet.
En local tous ce passait bien mais lors de la mise en ligne je m'aperçois que l'hébergeur de mon site (1and1) utilise des sockets. Sur le site de PEAR ils disent que l'utilisation de socket avec mysql ce fait de la façon suivante : $dsn = 'mysql://user@unix(/path/to/socket)/pear'; Le problème est que la connection ne ce fait pas .  :sweat:  
Cela viens surement d'un problème de syntaxe , j'ai essayé toute sorte de configurations , voici quelques exemples qui ne marche pas :
 
mysql://user:motdepass@serveur_1and1(chemin/vers/fichier.sock)/base_de_donnees  
mysqli://user:motdepass@serveur_1and1(chemin/vers/fichier.sock)/base_de_donnees
mysql://user:motdepass@serveur_1and1(:chemin/vers/fichier.sock)/base_de_donnees
mysql://user:motdepass@serveur_1and1:chemin/vers/fichier.sock:base_de_donnees
mysql://user:motdepass@tcp+serveur_1and1(chemin/vers/fichier.sock)/base_de_donnees
mysql://user:motdepass@unix+serveur_1and1(chemin/vers/fichier.sock)/base_de_donnees etc.... etc....
 
Je pense réellement que cela viens d'une erreur de syntaxe sur le DSN enregistré sous forme de chaînes de caractères puisque quand je réalise un DSN sous forme de tableau la connexion est réalisée avec succès.Voici un exemple pour mieux comprendre le problème.
 
//Le dsn est enregistré sous forme de tableau associatif
 
/*
 EXEMPLE 1 (MARCHE)
 */

Spoiler :


$dsn =array(
    'phptype'  => 'mysql',
    'username' => 'user',
    'password' => 'motdepass',
    'hostspec' => 'serveur_1and1:chemin/vers/fichier.sock',  
    'database' => 'base_de_donne')
 
$options = array(
    'debug'       => 2,
    'portability' => DB_PORTABILITY_ALL,
);
 
//connexion à la base de données grâce à pear
$db =& DB::connect($dsn, $options);
 
//dans cette exemple la connexion réussie avec succès et je peu utiliser la base de données le problème est que ce genre de tableau ne peut pas être utilisé dans mon programme
if (PEAR::isError($db)) {
    die($db->getMessage());
}


/*
 EXEMPLE 2 (MARCHE PAS)
 */

Spoiler :


//Le dsn est enregistré sous forme de chaîne de caractères
$dsn = "mysql://user:motdepass@serveur_1and1(chemin/vers/fichier.sock)/base_de_donnees";
 
$options = array(
    'debug'       => 2,
    'portability' => DB_PORTABILITY_ALL,
);
 
//connexion à la base de données grâce à pear
$db =& DB::connect($dsn, $options);
 
//dans cette exemple la connexion rentre dans la condition (le message d'erreur varie entre "failed connect" ou "unknow error" selon la syntaxe que j'ai modifié)
if (PEAR::isError($db)) {
    die($db->getMessage());
}


 
Voilà j'espère avoir été clair ,cela fait beaucoup trop de temps que je suis penché sur le problème et je n'ai plus d'idées, si quelqu'un a déjà une bonne expérience de PEAR et comprend mon erreur, je serais reconnaissant de l'aide qu'il m'aura apporté.
Merci de votre attention.


Message édité par goupil_13 le 10-06-2010 à 14:16:29
Reply

Marsh Posté le 10-06-2010 à 14:15:32   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed