2013-08-16 6 views
0

J'utilise un serveur de build Linux (http://circleci.com) pour les compilations et tests automatiques; Cependant, j'ai besoin de me connecter à un serveur MSSQL. Je peux développer sur Windows très bien et se connecter en utilisant les pilotes MS php SQLSVR, mais je ne peux pas me connecter sur le serveur de construction Linux car les pilotes sont uniquement des fenêtres.PHP Se connecter à MSSQL depuis Linux et Windows

Ma question est la suivante: existe-t-il un moyen unique de se connecter au serveur MSSQL via PHP pour Windows et Linux? essayé odbc mais vous avez besoin bdlib et FreeTDS sur linux - cela constituerait un changement de code qui signifie donc les tests ne sont pas 100%, par exemple sur l'environnement Windows, il utiliserait odbc:{SQL Server} et sur linux il serait odbc:FreeTDS

Il vient doesn Ne semblez pas correct de vérifier quel système est utilisé, puis choisissez la chaîne de connexion db correspondante.

J'utilise PHP 5.5.1

+0

Il pourrait être mieux nommé comme un changement de configuration. – Spaceghost

+0

désolé, pas sûr de ce que vous voulez dire? –

+0

Si les chaînes de connexion sont dans un fichier de configuration (et c'est une meilleure idée que de mettre directement dans le code), il suffit de changer le fichier de configuration - donc c'est un changement de configuration – Spaceghost

Répondre

0

Non, il n'y a pas une seule façon mais il serait trivial de faire quelque chose comme ceci:

if ('Linux' === PHP_OS){ 
    $pdo = new PDO("dblib:dbname=$database_name;host=$database_server", $username, $password); 
}else{ 
    // $pdo = whatever you're using on your Windows box now. 
} 

Vous devrez configurer votre odbc. Les fichiers ini, odbcinst.ini et freetds.conf sur le serveur Linux.

+0

Salut Merci pour cela. exactement ce que je pensais. Cependant, auriez-vous besoin de configurer les fichiers odbc.ini, odbcinst.ini et freetds.conf à chaque fois? En gardant à l'esprit que le serveur de build est approvisionné à partir d'AWS et est chaque fois renouvelé. –

+0

Si c'est à chaque fois, alors oui, vous devrez également configurer ces fichiers de configuration à chaque fois. Quand vous dites "frais", je suppose que c'est une installation Linux barebones et cela signifierait que vous devrez également installer le logiciel DBLib et FreeTDS à chaque fois. Vous pouvez écrire un script BASH pour faire ces tâches et l'intégrer à votre processus: 1) instance de provision, 2) exécuter un script qui installe le logiciel et met à jour les fichiers de configuration, 3) exécuter les builds/tests que vous exécutez actuellement. –

+0

merci c'était ce que j'ai pensé. Je voulais juste vérifier. –

Questions connexes