sql server – How to connect to mssql using pdo through PHP and Linux?-ThrowExceptions

Exception or error:

I’m trying to for a new PDO connection using the following code.

new PDO("mssql:driver=????;Server={$serverName};Database={$databaseName}", $username, $password, array(PDO::ATTR_PERSISTENT => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

I’m not sure what drivers to use? Or how to install them. I can connect perfectly fine using the mssql_connect function in PHP but I want to use the PDO library instead.

My php.ini settings for mssql are:


MSSQL Support   enabled
Active Persistent Links     0
Active Links    1
Library version     FreeTDS

Directive   Local Value Master Value
mssql.allow_persistent  On  On
mssql.batchsize 0   0
mssql.charset   no value    no value
mssql.compatability_mode    Off Off
mssql.connect_timeout   5   5
mssql.datetimeconvert   On  On
mssql.max_links Unlimited   Unlimited
mssql.max_persistent    Unlimited   Unlimited
mssql.max_procs Unlimited   Unlimited
mssql.min_error_severity    10  10
mssql.min_message_severity  10  10
mssql.secure_connection Off Off
mssql.textlimit Server default  Server default
mssql.textsize  Server default  Server default
mssql.timeout   60  60
How to solve:

The PDO mssql driver is no more, use sqlsrv (under php windows) or dblib (under php linux)




I am running Ubuntu 14.04. Trying to connect to MSSQL I got “Uncaught exception ‘PDOException’ with message ‘could not find driver'”. It seems that I was missing the dblib/sybase PHP extension.

I had to run:

sudo apt-get install php5-sybase freetds-common libsybdb5 \ 
&& sudo apache2ctl restart

Works fine now.



$dbh = new PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw");

$hostname may need to be configured as either...




The dblib/sybase PHP extension tip posted by Karl Wilbur worked for me.
The pre-installation check page for LimeSurvey now shows

PHP PDO driver library- Microsoft SQL Server (dblib), MySQL

Just make sure you find and install the version that aligns with the PHP version you are using;

Prompt>sudo apt-get install php<appropriate version>-sybase freetds-common libsybdb5
Prompt>sudo apache2ctl restart


Leave a Reply

Your email address will not be published. Required fields are marked *