Во-первых, я прошу прощения, потому что у меня минимальный опыт работы с 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? Я чувствую, что упускаю что-то глупое. Любая помощь будет принята с благодарностью!
Если ваша ОС 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/
Дополнительные драйверы PHP должны быть установлены как системные пакеты, в зависимости от вашего дистрибутива Linux. Например, в Debian вы можете установить необходимый пакет с помощью этой команды:
sudo apt-get install php7.1-odbc
По крайней мере, это будет шаг на правильном пути.