简体   繁体   中英

Unable to connect to MSSQL PHP7 with PDO: unixODBC

Firstly, I apologize because I have minimal experience with Linux so I may just not be understanding something obvious. Ultimately, I am trying to query a MSSQL database via PHP.

I have installed freetds and unixODBC. I confirmed the setup with both tsql (freetds) and isql (unixODBC) and everything works. The problem is when I try to connect from PHP using pdo using the following: $db = new PDO('odbc:mssql', '$username','$password');

I receive a fatal PHP error: Uncaught PDOException: could not find driver...

Upon further inspection, I looked at my PHP info file and the available PDO drivers are: mysql and sqlite. How/where do I get the pdo odbc driver for PHP7? In the PHP documentation, it appears that the driver is included in the PHP source, but the only option I see is to use ./configure and from what I understand, that is only to compile from source.

Is there a way to add the driver to an already compiled version of PHP7? I feel like I am missing something stupid. Any help would be greatly appreciated!

Additional PHP drivers should be installed as system packages, depending of your linux distribution. For example, with Debian, you may install the required package with this command :

sudo apt-get install php7.1-odbc

At least, it will be a step in the right path.

If your OS is UBUNTU

Install the unixODBC driver manager and Microsoft ODBC driver for Linux

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

Run installer

sh installodbc_ubuntu.sh

Install PHP dependenceis

apt-get install php-pear php-dev

Install sqlsrv (check last version with pecl search sqlsrv)

pecl install sqlsrv-4.0.5

Install pdo_sqlsrv (check last version with pecl search sqlsrv)

pecl install pdo_sqlsrv-4.0.5

Load extensions

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

Restart PHP-FPM

service php7.0-fpm restart

For windows 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*||"`

or via yum look; https://webtatic.com/packages/php70/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM