如何使用PHP PDO从Mac连接到Sql Server?

Eri*_*ard 29 php sql-server pdo

如果您在Google上搜索此问题,您会发现很多不正确,误导性和过时的信息.令人惊讶的是,Stack Overflow上没有一个可靠的答案,所以我们应该改变它.

我正在使用Apache和PHP的Mac端口安装.我已经安装了php5-mssql,我可以在我的phpinfo()页面上看到mssql.

但我不认为它在PDO下列出.

PDO support enabled
PDO drivers     dblib, mysql, odbc, pgsql 
Run Code Online (Sandbox Code Playgroud)

mssql是否与PDO无关?是否有其他驱动程序可以在Mac上使用PDO连接到SqlServer数据库?似乎这是应该可能的事情.

Ben*_*ill 16

这对你有帮助吗?

http://blog.nguyenvq.com/2010/05/16/freetds-unixodbc-rodbc-r/

我使用FreeTDS从Linux服务器连接到Microsoft SQL服务器,看起来上面链接中的人使用FreeTDS从Mac连接.

这是我的/etc/freetds/freetds.conf文件(我添加的唯一部分是XYZ服务器的最后一部分):

[global]
        # TDS protocol version
;       tds version = 4.2

        # Whether to write a TDSDUMP file for diagnostic purposes
        # (setting this to /tmp is insecure on a multi-user system)
;       dump file = /tmp/freetds.log
;       debug flags = 0xffff

        # Command and connection timeouts
;       timeout = 10
;       connect timeout = 10

        # If you get out-of-memory errors, it may mean that your client
        # is trying to allocate a huge buffer for a TEXT field.  
        # Try setting 'text size' to a more reasonable limit 
        text size = 64512

# Define a connection to the MSSQL server.
[xyz]
        host = xyz
        port = 1433
        tds version = 8.0
Run Code Online (Sandbox Code Playgroud)

[由提问者编辑]

FreeTDS配置是答案的前半部分.一旦配置完毕,您应该能够从命令行运行这样的东西并连接:

tsql -S xyz -U username -P password
Run Code Online (Sandbox Code Playgroud)

然后你需要使用dblib而不是mssql作为PDO驱动程序:

$pdo = new PDO("dblib:host=$dbhost;dbname=$dbname",
                "$dbuser","$dbpwd");
Run Code Online (Sandbox Code Playgroud)

其中$ dbhost是freetds.conf文件中的名称

  • 我在Mac上使用这种方法没有运气. (2认同)

E_p*_*E_p 5

dblib是需要在unix系统上与mssql一起使用的驱动程序

你无需安装任何其他东西,

<?php
    $dsn = 'dblib:dbname=testdb;host=127.0.0.1';
    $user = 'dbuser';
    $password = 'dbpass';
    $dbh = new PDO($dsn, $user, $password);
Run Code Online (Sandbox Code Playgroud)


Est*_*dán 5

在查看了很多线程后,我发现使用PHP 7或更早版本从Mac OS X连接到MSSQL的最佳方法是使用dblib.(只需下载正确的php版本)

您可以按照这些说明(忽略mssql.so扩展名)轻松连接:

https://github.com/BellevueCollege/public-docs/blob/master/PHP/configure-mssql-pdodblib-mac.md

它与OS X El Capitan,Bitnami和PHP 7完美配合.

步骤1.-安装XCode

$ xcode-select ---install
Run Code Online (Sandbox Code Playgroud)

2.-安装Homebrew

3.-使用Homebrew安装autoconf.

$ brew install autoconf
Run Code Online (Sandbox Code Playgroud)

4.-安装FreeTDS

$ brew install freetds
Run Code Online (Sandbox Code Playgroud)

5.-下载您的PHP源版本并解压缩.

6.-构建PDO DBLIB扩展(PHP 5.5.14的示例)

$ cd php-5.5.14/ext/pdo_dblib
$ phpize
$ ./configure --with-php-config=/usr/bin/php-config --with-pdo-dblib=/usr/local/
$ make
$ sudo cp modules/pdo_dblib.so /usr/lib/php/extensions/no-debug-non-zts-20121212
Run Code Online (Sandbox Code Playgroud)

7.-将.so extensio添加到php.ini extension = pdo_dblib.so

8.-重启Apache

9.-使用dblib dsn连接:

$pdo = new PDO("dblib:host=$dbhost;dbname=$dbname","$dbuser","$dbpwd");
Run Code Online (Sandbox Code Playgroud)