如何通过 PHP 和 Linux 使用 pdo 连接到 mssql?
Posted
技术标签:
【中文标题】如何通过 PHP 和 Linux 使用 pdo 连接到 mssql?【英文标题】:How to connect to mssql using pdo through PHP and Linux? 【发布时间】:2011-08-22 16:06:46 【问题描述】:我正在尝试使用以下代码建立新的 PDO 连接。
new PDO("mssql:driver=????;Server=$serverName;Database=$databaseName", $username, $password, array(PDO::ATTR_PERSISTENT => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
我不确定要使用什么驱动程序?或者如何安装它们。我可以使用 php 中的 mssql_connect
函数完美连接,但我想改用 PDO 库。
我对 mssql 的 php.ini
设置是:
ssql
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
【问题讨论】:
【参考方案1】:PDO mssql驱动没有了,使用sqlsrv
(php windows下)或dblib
(php linux下)
http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx
http://www.php.net/manual/en/ref.pdo-dblib.php
【讨论】:
使用 dblib 仍然会产生缺少驱动程序的错误。 “未捕获的异常 'PDOException' 带有消息'找不到驱动程序'”。我觉得奇怪的是 mssql_connect 工作正常,但我必须做一些事情才能让 PDO 端正常工作。我对linux不是很熟悉,这意味着我不确定我需要整理的驱动程序吗? 你需要在你的 php.ini 中启用 pdo_dblib.so 并在 Linux 下设置 FreeTDS。 如何在配置中启用 pdo_dblib?我也在使用centos 5 32bit,我该如何设置? pdo_dblib 不再适用于 PHP 5.4+...我找不到适合此问题的解决方案。 @James PHP Microsoft PDO_SQLSRV 是否已弃用或使用它没有问题?【参考方案2】:我正在运行 Ubuntu 14.04。尝试连接到 MSSQL 我得到“未捕获的异常 'PDOException' 和消息'找不到驱动程序'”。看来我错过了 dblib/sybase PHP 扩展。
我不得不跑:
sudo apt-get install php5-sybase freetds-common libsybdb5 \
&& sudo apache2ctl restart
现在工作正常。
【讨论】:
php-sybase 包为我解决了这个问题。我不需要安装其他的。【参考方案3】:试试
$dbh = new PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw");
$hostname may need to be configured as either...
$hostname.':'.$port;
或
$hostname.','.$port;
【讨论】:
我收到的错误消息是未捕获异常 'PDOException' 和消息'找不到驱动程序'【参考方案4】:Karl Wilbur 发布的 dblib/sybase PHP 扩展技巧对我有用。 LimeSurvey 的安装前检查页面现在显示
PHP PDO 驱动程序库 - Microsoft SQL Server (dblib), mysql
只要确保找到并安装与您使用的 PHP 版本一致的版本即可;
Prompt>sudo apt-get install php<appropriate version>-sybase freetds-common libsybdb5
Prompt>sudo apache2ctl restart
干杯,
【讨论】:
以上是关于如何通过 PHP 和 Linux 使用 pdo 连接到 mssql?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PHP PDO 从 Mac 连接到 Sql Server?
如何在 Windows 开发环境中在 PHP 中使用 PDO 和 MSSQL?
使用 PDO_DBLIB 连接到 MS SQL 数据库的 PHP 错误