Applicable to:
- Plesk Onyx for Linux
Question
It is required to connect to SQLServer (MSSQL) databases via PHP script on a Linux system.
What extension should be installed and how it can be done?
Answer
Modules sqlsrv
and pdo_sqlsrv
should be enabled for PHP engine.
Warning: These extensions were not properly tested with Plesk and are not officially supported. Perform all operations at your own risk.
Note: The installation of pecl/sqlsrv requires PHP version >= 7.0.0
-
Connect to the server via SSH.
-
Install necessary packages:
-
For PHP 7.0 provided by Plesk:
# apt-get install apt-transport-https gcc g++ unixodbc unixodbc-dev plesk-php70-dev
-
For PHP 7.1 provided by Plesk:
# apt-get install apt-transport-https gcc g++ unixodbc unixodbc-dev plesk-php71-dev
-
For PHP 7.2 provided by Plesk:
# apt-get install apt-transport-https gcc g++ unixodbc unixodbc-dev plesk-php72-dev
-
-
Install the
msodbcsql
package:# curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
# curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
# apt-get update
# ACCEPT_EULA=Y apt-get install msodbcsql -
Add the
pdo_sqlsrv
andsqlsrv
modules:-
For PHP 7.0 provided by Plesk:
# /opt/plesk/php/7.0/bin/pecl install pdo_sqlsrv
# echo "extension=pdo_sqlsrv.so" > /opt/plesk/php/7.0/etc/php.d/pdo_sqlsrv.ini
# /opt/plesk/php/7.0/bin/pecl install sqlsrv
# echo "extension=sqlsrv.so" > /opt/plesk/php/7.0/etc/php.d/sqlsrv.ini -
For PHP 7.1 provided by Plesk:
# /opt/plesk/php/7.1/bin/pecl install pdo_sqlsrv
# echo "extension=pdo_sqlsrv.so" > /opt/plesk/php/7.1/etc/php.d/pdo_sqlsrv.ini
# /opt/plesk/php/7.1/bin/pecl install sqlsrv
# echo "extension=sqlsrv.so" > /opt/plesk/php/7.1/etc/php.d/sqlsrv.ini -
For PHP 7.2 provided by Plesk:
# /opt/plesk/php/7.2/bin/pecl install pdo_sqlsrv
# echo "extension=pdo_sqlsrv.so" > /opt/plesk/php/7.2/etc/php.d/pdo_sqlsrv.ini
# /opt/plesk/php/7.2/bin/pecl install sqlsrv
# echo "extension=sqlsrv.so" > /opt/plesk/php/7.2/etc/php.d/sqlsrv.ini
-
-
Reread PHP handlers:
# plesk bin php_handler --reread
-
Make sure that the required modules are enabled:
-
For PHP 7.0 provided by Plesk:
# /opt/plesk/php/7.0/bin/php -m | grep sqlsrv
pdo_sqlsrv
sqlsrv -
For PHP 7.1 provided by Plesk:
# /opt/plesk/php/7.1/bin/php -m | grep sqlsrv
pdo_sqlsrv
sqlsrv -
For PHP 7.2 provided by Plesk:
# /opt/plesk/php/7.2/bin/php -m | grep sqlsrv
pdo_sqlsrv
sqlsrv
-
-
Restart the PHP-FPM master process to apply changes to FPM sites
-
Connect to the server via SSH.
-
Install the
msodbcsql
package:# curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
# yum remove unixODBC-utf16 unixODBC-utf16-devel
# ACCEPT_EULA=Y yum install msodbcsql -
Install necessary packages:
-
For PHP 7.0 provided by Plesk:
# yum install unixODBC-devel gcc-c++ gcc autoconf automake plesk-php70-devel
-
For PHP 7.1 provided by Plesk:
# yum install unixODBC-devel gcc-c++ gcc autoconf automake plesk-php71-devel
-
For PHP 7.2 provided by Plesk:
# yum install unixODBC-devel gcc-c++ gcc autoconf automake plesk-php72-devel
-
-
Add the
pdo_sqlsrv
andsqlsrv
modules:-
For PHP 7.0 provided by Plesk:
# /opt/plesk/php/7.0/bin/pecl install pdo_sqlsrv
# echo "extension=pdo_sqlsrv.so" > /opt/plesk/php/7.0/etc/php.d/pdo_sqlsrv.ini
# /opt/plesk/php/7.0/bin/pecl install sqlsrv
# echo "extension=sqlsrv.so" > /opt/plesk/php/7.0/etc/php.d/sqlsrv.ini -
For PHP 7.1 provided by Plesk:
# /opt/plesk/php/7.1/bin/pecl install pdo_sqlsrv
# echo "extension=pdo_sqlsrv.so" > /opt/plesk/php/7.1/etc/php.d/pdo_sqlsrv.ini
# /opt/plesk/php/7.1/bin/pecl install sqlsrv
# echo "extension=sqlsrv.so" > /opt/plesk/php/7.1/etc/php.d/sqlsrv.ini -
For PHP 7.2 provided by Plesk:
# /opt/plesk/php/7.2/bin/pecl install pdo_sqlsrv
# echo "extension=pdo_sqlsrv.so" > /opt/plesk/php/7.2/etc/php.d/pdo_sqlsrv.ini
# /opt/plesk/php/7.2/bin/pecl install sqlsrv
# echo "extension=sqlsrv.so" > /opt/plesk/php/7.2/etc/php.d/sqlsrv.ini
-
-
Reread PHP handlers:
# plesk bin php_handler --reread
-
Make sure that the required modules are enabled:
-
For PHP 7.0 provided by Plesk:
# /opt/plesk/php/7.0/bin/php -m | grep sqlsrv
pdo_sqlsrv
sqlsrv -
For PHP 7.1 provided by Plesk:
# /opt/plesk/php/7.1/bin/php -m | grep sqlsrv
pdo_sqlsrv
sqlsrv -
For PHP 7.2 provided by Plesk:
# /opt/plesk/php/7.2/bin/php -m | grep sqlsrv
pdo_sqlsrv
sqlsrv
-
-
Restart the PHP-FPM master process to apply changes to FPM sites
-
Connect to the server via SSH.
-
Install the
msodbcsql
package:# curl https://packages.microsoft.com/config/rhel/7/prod.repo >/etc/yum.repos.d/mssql-release.repo
# yum remove unixODBC-utf16 unixODBC-utf16-devel
# ACCEPT_EULA=Y yum install msodbcsql -
Install necessary packages:
-
For PHP 7.0 provided by Plesk:
# yum install unixODBC-devel gcc-c++ gcc autoconf automake plesk-php70-devel
-
For PHP 7.1 provided by Plesk:
# yum install unixODBC-devel gcc-c++ gcc autoconf automake plesk-php71-devel
-
For PHP 7.2 provided by Plesk:
# yum install unixODBC-devel gcc-c++ gcc autoconf automake plesk-php72-devel
- Add the
pdo_sqlsrv
andsqlsrv
modules:
-
For PHP 7.0 provided by Plesk:
# /opt/plesk/php/7.0/bin/pecl install pdo_sqlsrv
# echo "extension=pdo_sqlsrv.so" > /opt/plesk/php/7.0/etc/php.d/pdo_sqlsrv.ini
# /opt/plesk/php/7.0/bin/pecl install sqlsrv
# echo "extension=sqlsrv.so" > /opt/plesk/php/7.0/etc/php.d/sqlsrv.ini -
For PHP 7.1 provided by Plesk:
# /opt/plesk/php/7.1/bin/pecl install pdo_sqlsrv
# echo "extension=pdo_sqlsrv.so" > /opt/plesk/php/7.1/etc/php.d/pdo_sqlsrv.ini
# /opt/plesk/php/7.1/bin/pecl install sqlsrv
# echo "extension=sqlsrv.so" > /opt/plesk/php/7.1/etc/php.d/sqlsrv.ini -
For PHP 7.2 provided by Plesk:
# /opt/plesk/php/7.2/bin/pecl install pdo_sqlsrv
# echo "extension=pdo_sqlsrv.so" > /opt/plesk/php/7.2/etc/php.d/pdo_sqlsrv.ini
# /opt/plesk/php/7.2/bin/pecl install sqlsrv
# echo "extension=sqlsrv.so" > /opt/plesk/php/7.2/etc/php.d/sqlsrv.ini
-
Reread PHP handlers:
# plesk bin php_handler --reread
-
Make sure that the required modules are enabled:
-
For PHP 7.0 provided by Plesk:
# /opt/plesk/php/7.0/bin/php -m | grep sqlsrv
pdo_sqlsrv
sqlsrv -
For PHP 7.1 provided by Plesk:
# /opt/plesk/php/7.1/bin/php -m | grep sqlsrv
pdo_sqlsrv
sqlsrv -
For PHP 7.2 provided by Plesk:
# /opt/plesk/php/7.2/bin/php -m | grep sqlsrv
pdo_sqlsrv
sqlsrv
- Restart the PHP-FPM master process to apply changes to FPM sites
Additional information
Instructions are taken from the Microsoft documentation page and adapted to Plesk PHP:
Installing the Microsoft ODBC Driver for SQL Server on Linux and macOS
It is also possible to use an older system version of PHP. For example, in order to connect to MSSQL on CentOS 7 with system PHP version 5.4, the following command needed to be executed:
# yum install epel-release
# yum install php-mssql
Comments
8 comments
Note in case someone stumbles across this article: I had to run the reread command for them to show up: https://www.danhendricks.com/2017/11/installing-microsoft-sql-server-php-extensions-plesk-onyx/
@Daniel, Thank you for your input! You are right, that command is necessary indeed. The article has been modified accordingly.
Hi,
can you make the same proccess for CENTOS?
i followed this: https://www.danhendricks.com/2017/11/installing-microsoft-sql-server-php-extensions-plesk-onyx/
and got some errors
Noam
@Noam, Hi!
The article was updated with the corresponding steps for CentOS 7.
Good morning,
I've installed sqlsrv extension for php 7.0 but I still have PDO Exception driver not found.
@Federica Della Monica
Hi!
Make sure pdo_mysql is also installed and enabled.
In case you will have difficulties, feel free to contact Plesk Support.
Hi!
pdo_mysql is installed and enabled.
See image below
@Federica Della Monica
Hi!
Due to issue complexity, I would suggest contacting Plesk Technical Support for deeper investigation.
Please sign in to leave a comment.