我正在使用Apache和PHP的Mac版本安装程序。我已经安装了php5-mssql,并且我可以在我的phpinfo()页面上看到mssql。
但是我在PDO下面没有看到它列出来。
PDO support enabled
PDO drivers dblib, mysql, odbc, pgsql
mssql与PDO没有关联吗?在Mac上是否还有其他驱动程序可以使用PDO连接SqlServer数据库?似乎这是可以实现的事情。
PDO support enabled
PDO drivers dblib, mysql, odbc, pgsql
mssql与PDO没有关联吗?在Mac上是否还有其他驱动程序可以使用PDO连接SqlServer数据库?似乎这是可以实现的事情。
这能帮到您吗?
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
< p >[由提问者编辑]
FreeTDS配置是答案的第一步。一旦配置完成,您应该能够从命令行运行类似以下命令并进行连接:
tsql -S xyz -U username -P password
那么您需要使用dblib而不是mssql作为PDO驱动程序:
$pdo = new PDO("dblib:host=$dbhost;dbname=$dbname",
"$dbuser","$dbpwd");
$dbhost是来自freetds.conf文件的名称
dblib是在Unix系统上与mssql一起使用的驱动程序。
您无需安装其他任何内容。
<?php
$dsn = 'dblib:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
$dbh = new PDO($dsn, $user, $password);
$dsn = 'dblib:dbname=testdb;host=127.0.0.1:1433';
。 - E_phttps://github.com/BellevueCollege/public-docs/blob/master/PHP/configure-mssql-pdodblib-mac.md
我使用OS X El Capitan和PHP 7的Bitnami,一切都很完美。
步骤: 1. 安装XCode
$ xcode-select ---install
2.- 安装Homebrew。
3.- 使用Homebrew安装autoconf。
$ brew install autoconf
4. - 安装FreeTDS
$ brew install freetds
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
7. - 将.so扩展名添加到php.ini文件中 extension=pdo_dblib.so
8. - 重新启动Apache
9. - 使用dblib dsn连接:
$pdo = new PDO("dblib:host=$dbhost;dbname=$dbname","$dbuser","$dbpwd");
/usr/lib/...
位置。我收到了如下提示: cp: /usr/lib/php/extensions/no-debug-non-zts-20121212/pdo_dblib.so: 操作不允许
。我也尝试了通过 ForkLift 将该文件复制过去,但仍然被拒绝。是的,我可以确定我使用了正确的 su 凭据。我只是希望它能给我一个原因。供参考,我正在使用 MAMP 4.0.6 和其 PHP 7.0.12。 - Sturm$conn = new PDO("dblib:host=azure-sql;dbname=my-database-name",
"username@m53man42a",
"my-secret-password");
我的FreeTDS.conf文件:
[azure-sql]
host = m53man42a.database.windows.net
port = 1433
tds version = 8.0
client charset = UTF-8
text size = 20971520
mydb
的Azure SQL数据库,并将其放置在名为myserver.database.windows.net
的服务器上。重要的是要记住打开防火墙以允许客户端IP地址访问,这可以在服务器上完成。sudo port install freetds +odbc
sudo port install php56-odbc
/opt/local/etc/odbcinst.ini
[FreeTDS]
Description = ODBC for FreeTDS
Driver = /opt/local/lib/libtdsodbc.so
Setup = /opt/local/lib/libtdsodbc.so
FileUsage = 1
/opt/local/etc/freetds/freetds.conf
[myserver]
host = myserver.database.windows.net
port = 1433
tds version = 7.0
/opt/local/etc/odbc.ini
[myds]
Description = Test for SQL Server on Azure
Driver = FreeTDS
Trace = Yes
TraceFile = /var/log/sql.log
Database = mydb
Servername = myserver
UserName = myusername
Password = mypassword
Port = 1433
Protocol = 7.0
ReadOnly = No
RowVersioning = No
ShowSystemTables = No
ShowOidColumn = No
FakeOidIndex = No
myds
的数据源,指向您的数据库,使您能够使用以下PHP连接:$conn = new PDO('odbc:myds', 'myusername', 'mypassword');
tsql -S myserver -U myusername -P mypassword
然后使用以下命令检查ODBC规范是否正常:
isql -v myds myusername mypassword
$a = new \PDO()
吗? - Shoedblib:
吗? - j0kpdo_mssql
扩展吗? https://dev59.com/PmXWa4cB1Zd3GeqPNoRo - kskaradzinski