AOP Erreur “Adaptive Server n'est pas disponible” lors de la connexion à la Base de données MS SQL

Je suis en train d'essayer de se connecter à une base de données SQL server qui s'exécute sur un serveur windows. Je suis en cours d'exécution de ce code PHP sur un serveur linux (centos 7).

Je suis en utilisant le suivant aop chaîne de connexion pour se connecter à la base de données.

$db = new PDO ("dblib:192.168.2.1;dbname=TestDB","username",'pass');

Lorsque j'exécute le code, j'obtiens l'exception suivante. 'PDOException' with message 'SQLSTATE[HY000] Impossible de se connecter: Adaptive Server n'est pas disponible ou n'existe pas (la gravité 9)'

J'ai essayé de tester la connexion à l'aide tsql et je suis en mesure de se connecter à la base de données sans erreur. Le code suivant m'a donné une liste de toutes les tables dans TestDB. Il ne serait pas travailler si je didng type d'utilisation TestDB premier.

tsql -S 192.168.2.1 -U username -P 'pass' -L TestDB

use TestDB 
GO 
select * FROM sys.Tables 
GO

Mon freetds.fichier conf contient les éléments suivants

[Server1]
    host = 192.168.2.1
    port = 1433
    tds version = 8.0

Je ne peux pas comprendre comment je suis en mesure de vous connecter à l'aide tsql, mais ne peut pas faire la même chose lors de la connexion avec php.

La dblib pilote est définitivement installé.

print_r(PDO::getAvailableDrivers()); 

Array ( [0] => dblib [1] => mysql [2] => sqlite )

Réponse

Trouvé la cause du problème. S'est avéré être SELinux. Les commandes suivantes résolu le problème.

setsebool -P httpd_can_network_connect 1

setsebool -P httpd_can_network_connect_db 1
Est-ce que votre port de match? Est votre Serveur SQL vraiment fonctionnant sous 1433? Vous pouvez le vérifier dans votre Gestionnaire de Configuration SQL Server pour en être sûr.
La façon dont vous instanciez votre objet PDO est autant que je sache le mal. Voir la doc. Ce dblib? Quel est l'hôte? ... Edit: Bon, dblib des liens vers MSServer, mais alors le "host=" préfixe avant que l'adresse IP est manquant.
Ce dblib est? Le connecteur pour SQL Server. 😀 Voir PHP docs. php.net/manual/de/ref.pdo-dblib.php
oui le port est correct. Je peux me connecter à la DB à l'aide de tsql donc je pense que tout est ok. Il ressemble, il peut être spécifiques à php. dblib est le pilote utilisé. mysql ne fonctionne pas avec sql server.
Il semble que cette question a été posée avant. Voir si l'une de ces réponses aider: stackoverflow.com/questions/8511369/...

OriginalL'auteur Dan Hastings | 2015-07-01