Подключение Doctrine 2 к MSSQL для SYMFONY 2 в Linux

Я пытаюсь использовать Doctrine 2 (для Symfony 2) для подключения к MSSQLServer с Linux-машины.

Я установил pdo_dblib (PDO Driver for FreeTDS/Sybase DB-lib) и могу подключиться к серверу db через tsql в командной строке и из php cli. Таким образом, я знаю, что это работает.

В моем файле Symfony/app/config/parameters.ini я указал database_driver = "pdo_sqlsrv" в качестве драйвера базы данных (поскольку я читал, что это будет обрабатываться с помощью db_lib), но при попытке запустить команду create database (с помощью команды php app/console doctrine:database:create) Я получаю сообщение об ошибке:

Не удалось создать базу данных для соединения с именем не удалось найти драйвер

Затем я изменил драйвер на database_driver="pdo_dblib", и теперь я получаю сообщение об ошибке:

[Учение\DBAL\DBALException]
Данный "драйвер" pdo_dblib неизвестен, в настоящее время Doctrine поддерживает только следующие драйверы: pdo_mysql, pdo_sqlite, pdo_pgsql, pdo_oci, oci8, ibm_db2, pdo_ibm, pdo_sqlsrv

Так что кажется, что для подключения к MSSQL мой единственный вариант - pdo_sqlsrv, поэтому я пошел, чтобы установить это. Однако Я только что открыл здесь, что

Расширение PDO_SQLSRV совместимо только с PHP, работающим в Windows.

Таким образом, драйвер, поддерживаемый доктриной, и те, которые доступны для использования в Linux, кажутся взаимовыгодными. Из поиска я не нашел примеров того, что эта проблема была решена до сих пор (один из них отметил проблему как решение, но когда я прочитал нить, он просто переместил его dev env в окно окна... не совсем то, что у меня было в виду!).

Ответ 1

В Linux (по крайней мере, на дистрибутивах на основе Debian) php нуждается в пакете php5-sybase, который поддерживает Sybase и MSSql.

Если вы используете дистрибутив на основе debian, вы захотите сделать

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

и

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

должен предоставить вам

Драйверы PDO: dblib, mysql, sqlite,...

dblib на самом деле тот, который нам нужен

Теперь, чтобы использовать этот драйвер с Doctrine, этот пост: Doctrine 2 - Как добавить пользовательский драйвер DBAL? помог мне найти ответ.

OP предлагает использовать этот пакет на git, который заставляет вещи работать вместе.