2017-02-16 7 views
0

Я пытаюсь подключиться к удаленному серверу sql и преуспел в этом из командной строки. При запуске php -i | grep PDO я получаюPhp в Symfony и php run из командной строки загружают разные драйверы

PDO 
PDO support => enabled 
PDO drivers => sqlsrv, dblib, mysql 
PDO Driver for FreeTDS/Sybase DB-lib => enabled 
PDO Driver for MySQL => enabled` 

При запуске PHP скрипта из командной строки, я не могу подключиться к удаленной БД не проблемы. При выполнении этого точно такой же код в моем приложении Symfony, я получаю

[Doctrine\DBAL\Driver\PDOException]        
SQLSTATE[01002] Adaptive Server connection failed (severity 9) 

Когда я бегу phpinfo() в Symfony, единственный драйвер PDO, который приходит в mysql

Когда я бегу phpinfo() из командной строки, я get mysql, sqlsrv и dblib

Почему некоторые драйверы pdo не загружаются в Symfony?

Редактировать: БД правильно настроена в Symfony, так как php bin/console doctrine:query:sql "SELECT * FROM my_table" возвращает результаты. Тот же запрос, выполненный в Symfony, с ошибкой «невозможно загрузить драйвер»

+0

У вас есть два различных php.ini файлов в вашей системе. Запустите php -ini и сравните его с путём, указанным через phpinfo – Cerad

+0

@cerad, оба показывают '/ etc/php/7.0/cli/php.ini' в качестве загруженного конфигурационного файла –

+0

Моды также могут быть разными. Проверьте /etc/php/7.0/apache или fpm или любую другую папку и посмотрите, включен ли режим pdo, как в папке cli. – mickadoo

ответ

0

Вы упомянули эти драйверы pdo в файле app/config.yml в своем проекте symfony?

Вы должны сообщить symfony (что означает записать его в файле config.yml) об этих драйверах, чтобы он мог их распознавать и использовать.

Заканчивать эту тему, это может помочь вам, это об использовании драйвера PDO MySQL и драйвер PDO PostgreSQL

Use a postgres database with symfony3

+0

У меня было, но тем не менее это привело меня к решению. Оказывается, вы не можете напрямую установить драйвер на «dblib», но этот [link] (https://packagist.org/packages/leaseweb/doctrine-pdo-dblib) создает класс драйвера, который вы можете использовать вместо него. Спасибо, что пригласил меня туда, отметив это правильно. –

+0

Scratch, который на самом деле не привел меня туда. Я смог подключиться к БД с помощью доктрины, но опять же, только из командной строки с помощью bin/console. Когда я запускаю запрос в приложении, я получаю «Не могу загрузить драйвер», –