Question

Je vais avoir du mal à faire une connexion MySQL secondaire (à un DB externe distinct) dans mon code. Il fonctionne très bien en PHP 5.2.9, mais ne parvient pas à se connecter en PHP 5.3.0. Je suis au courant (au moins une partie) des changements nécessaires pour établir des connexions MySQL avec succès dans la nouvelle version de PHP, et ont réussi avant, donc je ne sais pas pourquoi il ne fonctionne pas cette fois-ci.

J'ai déjà une connexion db ouverte à une base de données locale. Cette fonction ci-dessous est ensuite utilisée pour effectuer une connexion supplémentaire dans un répertoire distinct, à distance. Le fichier de configuration inclus contient que les informations de base de données externes (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 le booléen en option drapeau new_link comme le quatrième argument de la fonction mysql_connect() et il ne fonctionne toujours pas.

J'ai mon cerveau ce creuse la matinée à essayer de comprendre pourquoi cette connexion ne fonctionne pas (alors que je l'ai fait quelque chose ailleurs très similaire à une deuxième base de données séparée qui fonctionne). Toute aide serait appréciée.

Merci!

Rich

Était-ce utile?

La solution

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top