2010-05-12 16 views
0

J'ai du mal à faire une connexion MySQL secondaire (à une base de données externe séparée) dans mon code. Cela fonctionne très bien dans PHP 5.2.9 mais ne parvient pas à se connecter dans PHP 5.3.0. Je suis au courant de (au moins certains) des changements nécessaires pour faire des connexions MySQL réussies dans la nouvelle version de PHP, et j'ai déjà réussi, donc je ne sais pas pourquoi ça ne marche pas cette fois-ci.tentative de connexion MySQL fonctionne très bien dans 5.2.9, mais pas dans 5.3.0 - Aide?

J'ai déjà une connexion db ouverte à une base de données locale. Cette fonction ci-dessous est ensuite utilisée pour établir une connexion supplémentaire avec un répertoire distant séparé. Le fichier de configuration inclus contient simplement les détails de la base de données externe (hôte, utilisateur, passe et nom). J'ai vérifié et il est inclus correctement.

function connectDP() { 
    global $dpConnection; 

    include("secondary_db_config.php); 
    $dpConnection = mysql_connect($dp_dbHost, $dp_dbUser, $dp_dbPass, true) or DIE("ERROR: Unable to connect to Deployment Platform"); 
    mysql_select_db($dp_dbName, $dpConnection) or DIE("ERROR 006: Unable to select Deployment Platform Database"); 
} 

je tente alors de faire de cette nouvelle connexion simplement en appelant cette fonction externe:

connectDP(); 

Mais lors du chargement de la page (en 5.3.0), je reçois le message:

ERROR: Unable to connect to Deployment Platform 

J'utilise l'option new_link flag boolean comme quatrième argument dans la fonction mysql_connect() et cela ne fonctionne toujours pas.

Je me suis mis à ronger ce matin en essayant de comprendre pourquoi cette connexion ne fonctionne pas (alors que j'ai fait quelque chose de très similaire ailleurs dans une deuxième base de données séparée qui fonctionne). Toute aide serait appréciée.

Merci!

Rich

Répondre

0

Depuis PHP 5.3, il utilise son propre pilote MySQL (mysqlnd) par défaut, au lieu du libmysqlclient. Selon la plate-forme, il ne peut pas lire les valeurs par défaut du fichier de configuration de votre MySQL (par exemple /etc/mysql/my.cnf). Vous devez éditer php.ini et spécifier les valeurs par défaut pour l'extension (s) que vous utilisez (mysql, mysqli, pdo). Par exemple, dans Debian, vous devez spécifier vous-même le chemin vers le socket (par exemple /var/run/mysqld/mysqld.sock) dans le fichier INI. Il suffit de passer par le fichier INI et de spécifier les options manquantes et cela devrait fonctionner.

+0

Salut, merci pour votre réponse. La connexion à distance que je fais est à un environnement d'hébergement partagé en utilisant cPanel. Y a-t-il un espoir, étant donné que je n'ai pas accès au fichier principal php.ini et aux fichiers my.cnf? – Rich