Невозможно подключиться к MSSQL PHP7 с помощью PDO: unixODBC

Во-первых, я прошу прощения, потому что у меня минимальный опыт работы с Linux, поэтому я просто не понимаю чего-то очевидного. В конечном итоге я пытаюсь запросить базу данных MSSQL через PHP.

Я установил freetds и unixODBC. Я подтвердил установку как с помощью tsql (freetds), так и isql (unixODBC), и все работает. Проблема в том, когда я пытаюсь подключиться из PHP, используя pdo, используя следующее:
$ db = новый PDO (‘odbc: mssql’, ‘$ username’, ‘$ password’);

Я получаю фатальную ошибку PHP: Uncaught PDOException: не могу найти драйвер …

При дальнейшей проверке я посмотрел мой информационный файл PHP и доступные драйверы PDO: mysql и sqlite. Как / где я могу получить драйвер pdo odbc для PHP7? Из документации PHP видно, что драйвер включен в исходный код PHP, но единственный вариант, который я вижу, — это использовать ./configure и, насколько я понимаю, это только для компиляции из исходного кода.

Есть ли способ добавить драйвер в уже скомпилированную версию PHP7? Я чувствую, что упускаю что-то глупое. Любая помощь будет принята с благодарностью!

0

Решение

Если ваша ОС UBUNTU

Установите диспетчер драйверов unixODBC и драйвер Microsoft ODBC для Linux

wget https://raw.githubusercontent.com/Microsoft/msphpsql/PHP-7.0-Linux/ODBC%20install%20scripts/installodbc_ubuntu.sh

Запустить установщик

sh installodbc_ubuntu.sh

Установить PHP зависимость

apt-get install php-pear php-dev

Установите sqlsrv (проверьте последнюю версию с помощью pecl search sqlsrv)

pecl install sqlsrv-4.0.5

Установите pdo_sqlsrv (проверьте последнюю версию с помощью pecl search sqlsrv)

pecl install pdo_sqlsrv-4.0.5

Загрузить расширения

echo "extension=sqlsrv.so" | sudo tee --append /etc/php/7.0/fpm/php.ini
echo "extension=pdo_sqlsrv.so" | sudo tee --append /etc/php/7.0/fpm/php.ini

Перезапустите PHP-FPM

service php7.0-fpm restart

Для окон
https://docs.microsoft.com/en-us/sql/connect/php/loading-the-php-sql-driver?view=sql-server-2017

CentOS 7

sudo su
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
exit
sudo yum update
sudo ACCEPT_EULA=Y yum install -y msodbcsql mssql-tools unixODBC-devel
sudo yum groupinstall "Development Tools"sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
echo "extension=sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
echo "extension=pdo_sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`

или через ням взгляд; https://webtatic.com/packages/php70/

1

Другие решения

Дополнительные драйверы PHP должны быть установлены как системные пакеты, в зависимости от вашего дистрибутива Linux. Например, в Debian вы можете установить необходимый пакет с помощью этой команды:

sudo apt-get install php7.1-odbc

По крайней мере, это будет шаг на правильном пути.

0

По вопросам рекламы [email protected]