То, что я хочу достичь, очень просто. Я хочу подключиться к внешней базе данных MS SQL из скрипта PHP через безопасное соединение. Это, однако, оказалось проблематичным, и, с трех часов до начала исследований, я в недоумении.
Платформа для клиента – 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.
Если вы хотите использовать PDO, вы можете настроить PDO ODBC. Вам нужно будет настроить конфигурационные файлы /etc/odbc.ini
, /etc/odbcinst.ini
и /etc/freetds/freetds.conf
.
Вам также нужно будет установить unixodbc и freetds: apt-get install unixodbc tdsodbc
.
Вы можете увидеть больше информации здесь: Подключить PHP к MSSQL через PDO ODBC
EDIT: Чтобы обеспечить соблюдение SSL в ODBC, добавьте ключевое слово Encrypt
и установите для него значение true в строке подключения. И настройте SQL Server на использование SSL: https://support.microsoft.com/en-us/kb/316898
EDIT 2: в соответствии с OP добавление encryption=require
и check certificate hostname
на freetds.config в соответствии со следующей спецификацией: http://www.freetds.org/userguide/freetdsconf.htm вместе с вышеуказанными шагами исправят проблему
Вы настроили mssql_connect
для использования безопасного соединения? Посмотрите в php.ini
и убедитесь, что mssql.secure_connection
параметра mssql.secure_connection
установлено значение on
[MSSQL] mssql.secure_connection = On