Conectar Doctrine 2 a MSSQL para SYMFONY 2 en Linux

Estoy tratando de usar Doctrine 2 (para Symfony 2) para conectarme a MSSQLServer desde una máquina Linux.

He instalado pdo_dblib (Driver PDO para FreeTDS / Sybase DB-lib) y puedo conectarme al servidor db a través de tsql en la línea de comando y desde php cli también. Por lo tanto, sé que esto está funcionando.

En mi archivo Symfony / app / config / parameters.ini, había especificado database_driver = “pdo_sqlsrv” como el controlador de la base de datos (cuando leí que esto sería manejado por db_lib ) pero al intentar ejecutar un comando create database (usando el comando php app/console doctrine:database:create ) Me aparece el error:

No se pudo crear la base de datos para la conexión nombrada no se pudo encontrar el controlador

Luego cambié el controlador a database_driver="pdo_dblib" y ahora estoy obteniendo el error:

[Doctrine \ DBAL \ DBALException]
El ‘controlador’ pdo_dblib dado es desconocido, Doctrine actualmente solo admite los siguientes controladores: pdo_mysql, pdo_sqlite, pdo_pgsql, pdo_oci, oci8, ibm_db2, pdo_ibm, pdo_sqlsrv

Entonces parece que para conectarme a MSSQL mi única opción es pdo_sqlsrv , así que fui a instalar esto. Sin embargo, acabo de descubrir aquí , que

La extensión PDO_SQLSRV solo es compatible con PHP que se ejecuta en Windows.

Por lo tanto, el controlador soportado por la doctrine y los disponibles para su uso en Linux parecen ser mutuamente excluyentes. De la búsqueda no he encontrado ninguna instancia de este problema que se haya resuelto hasta el momento (Un hombre marcó el problema como resuelto, pero cuando leí el hilo simplemente había movido su dev env a un cuadro de Windows … no exactamente lo que tenía ¡en mente!).

Bajo linux (al menos distribuciones basadas en Debian), php necesita el paquete php5-sybase que brinda soporte para Sybase y MSSql.

Si está utilizando una distribución basada en Debian, querrá hacer

 $ sudo apt-get install php5-sybase $ sudo service apache2 restart 

Y

 php -r "phpinfo();" | grep "PDO drivers" 

debería darte

Controladores PDO: dblib, mysql, sqlite, …

dblib es en realidad el que necesitamos

Ahora, para poder usar este controlador con Doctrine, esta publicación: Doctrine 2 – ¿Cómo agregar un controlador DBAL personalizado? me ayudó a encontrar la respuesta.

El OP sugiere usar este paquete en git que hace que las cosas funcionen juntas.