我的意思是非常简单。我想通过安全连接从PHP脚本连接到外部MS SQL数据库。然而,这已经证明是有问题的,到目前为止,研究投入了三个小时,我感到很茫然。
客户端的平台是Ubuntu,这意味着我不能使用SQLSRV。 安全连接已经过不同客户端的测试,工作正常。 我目前正在使用PDO和DBlib连接到数据库,这也可以正常工作。
我无法找到任何强制安全连接的方法。我尝试了多个其他驱动程序,但无济于事。
我有什么选择?
编辑:我留下了以下FreeTDS日志......
config.c:543: Got a match.
config.c:565: host = 'XXXXXXXXXX'
config.c:595: Found host entry XXXXXXXXXX.
config.c:599: IP addr is XXXXXXXXXX.
config.c:565: port = '1433'
config.c:565: encryption = 'require'
config.c:565: check certificate hostname = 'no'
config.c:629: UNRECOGNIZED option 'check certificate hostname' ... ignoring.
config.c:565: ca file = 'XXXXXXXXXX.pem'
config.c:629: UNRECOGNIZED option 'ca file' ... ignoring.
答案 0 :(得分:3)
如果要使用PDO,可以设置PDO ODBC。您需要设置配置文件/etc/odbc.ini
,/etc/odbcinst.ini
和/etc/freetds/freetds.conf
。
您还必须安装unixodbc和freetds:apt-get install unixodbc tdsodbc
。
您可以在此处查看更多信息:Connect PHP to MSSQL via PDO ODBC
编辑:要在ODBC中强制执行SSL,请添加Encrypt
关键字并在连接字符串中将其设置为true。并设置您的SQL Server以使用SSL:https://support.microsoft.com/en-us/kb/316898
编辑2:根据OP,按照以下规范将encryption=require
和check certificate hostname
添加到freetds.config:http://www.freetds.org/userguide/freetdsconf.htm以及上述步骤将解决问题
答案 1 :(得分:1)
您是否已将mssql_connect
配置为使用安全连接?查看php.ini
并验证mssql.secure_connection
参数是否已设置为
[MSSQL]
mssql.secure_connection = On