Erreur PHP se connectant à la base de données MS SQL en utilisant PDO_DBLIB
J'essaie de PHP PDO_DBLIB conducteur de se connecter à une base de données distante et vais avoir quelques problèmes.
La base de données est connectable via le même environnement à l'aide de telnet et un client SQL. Cependant, se connecter en utilisant le code suivant dans le PHP ne fonctionne pas:
<?php
$conn = new PDO('dblib:dbname=TestDB;host=RemoteServer;charset=utf8', 'my_user', 'my_pass');
L'exécution de ce code, que ce soit à partir de la ligne de commande ou Apache, génère l'erreur suivante:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] Impossible de se connecter: Adaptive Server n'est pas disponible ou n'existe pas (la gravité 9)'
Je suis en mesure de se connecter à la base de données en utilisant le même code sur un autre serveur web, ce qui m'amène à croire que c'est un problème de configuration. La php.les fichiers ini sur les deux serveurs semblent relativement la même. Ils ont chacun la même AOP bibliothèques activé avec les mêmes options configurées.
Quelqu'un a une idée de pourquoi cela pourrait-il se passer?
source d'informationauteur user543936
Vous devez vous connecter pour publier un commentaire.
S'avère que c'était beaucoup plus simple que je le pensais. Quelle que soit la raison, le serveur de développement n'a pas été en utilisant le Port 1433 comme le port par défaut de la connexion et avait, en revanche, en utilisant le Port 4000.
J'ai découvert cela en permettant à des journaux dans le freetds.fichier conf, et de les surveiller pendant que je faisais la demande.
Aussi, quelque chose à noter: La DBLIB extension utilise un deux-points (:) comme séparateur entre l'hôte et le port au lieu de la virgule. Malheureusement, l'erreur que vous recevez lorsque vous utilisez une virgule n'est pas très descriptif, donc j'espère que quelqu'un profite de cette découverte.
Écrire port en freetds.conf directement pour cet hôte:
Et laisser code php est: