Je me connecte à la database MSSQL externe pour les exports de PHP55 / osx et j'ai un problème de wierd.
code:
new \PDO("dblib:host={$hostname};dbname={$dbname}", $user, $pass);
jette:
SQLSTATE[01002] Adaptive Server connection failed (severity 9)
mais la connection de CLI fonctionne correctement
tsql -S hostname -U user -P pass -L nombase:
locale is "cs_CZ.UTF-8" locale charset is "UTF-8" using default charset "UTF-8" 1>
freetds.conf:
[hostname] host = ipaddress port = 1433 tds version = 8.0
tsql -C:
Version: freetds v0.91 freetds.conf directory: /usr/local/Cellar/freetds/0.91/etc MS db-lib source compatibility: no Sybase binary compatibility: no Thread safety: yes iconv library: yes TDS version: 7.1 iODBC: no unixodbc: no SSPI "trusted" logins: no Kerberos: no
Des idées? J'ai essayé presque n'importe quoi, se connecter au nom d'hôte, ip, avec et sans port, au nom d'instance, un autre user, versions TDS 7.0,7.1,7.2,8.0, réinstaller php et freetds
Vérifiez ces:
localisez freetds.conf sur votre disque. Il est possible qu'il existe à plusieurs endroits et tsql en utilise un tandis que PHP en utilise un autre. Le mieux est de les relier en un seul file commun et de les tester. Notez qu'un endroit commun pour ce file est ~ / .freetds.conf à côté de / etc / ou / usr / local / etc /
il devrait y avoir une section [global] sur votre file freetds.conf. Mettez là ces lignes:
tds version = 8.0
Taille du text = 20971520
charset client = UTF-8
Bien sûr, je pense que vous avez déjà vérifié quel pilote est chargé par PHP avec phpinfo (): mssql, sqlsrv ou dblib
C'est le message d'échec générique. Vous ne pouvez pas vous connecter à la database pour une raison quelconque. Étant donné que vous utilisez OSX et armser le plus probable, le problème réside dans la binding / chargement de la bibliothèque partagée. FreeTDS est basé sur Sybase 8 (comme MS SQL Server). C'est un peu arcanique à comstackr avec.
Votre PHP était-il lié au libsybdb.dylib qui installe les installations? Vous devriez être capable de savoir à l'aide de phpinfo () si cela est inclus dans votre server:
Configurez la command '–with-pdo-dblib = partagé, / usr / local / Cellar / freetds / 0.91 / lib'
Pour que cela fonctionne, vous devez comstackr / build votre PHP avec l'option dblib.
Ma solution:
Obtenez des FreeTds
brew install freetds
Comstackz et installez l'extension dblib
ext/pdo_dblib
sous-dossier ext/pdo_dblib
de la source phpize
, en vous assurant que c'est le bon binary pour votre installation ./configure --with-php-config=/usr/local/php5/bin/php-config --with-pdo-dblib=/usr/local/Cellar/freetds/0.95.19/
make
modules/pdo_dblib.so
dans votre directory d'installation PHP, en remplaçant l'ancienne version