Я пытаюсь установить соединение с MS SQL и запустить его через PHP на моей машине. Я использую IIS, у меня установлен PHP 7.2 и MS SQL Express 2017. У меня запущена базовая веб-страница, но когда я нажимаю, чтобы открыть страницу PHP, соединение не работает.
session_start();
echo "Hello ";
if (isset($_POST['submit'])) {
$_SESSION["server"] = $_POST['server'];
$_SESSION["database"]= $_POST['database'];
$_SESSION["username"] = $_POST['username'];
$_SESSION["password"] = $_POST['password'];
echo $_SESSION["database"];
//CONNECTION
$serverName = $_SESSION["server"];
$connectionInfo["Database"] = $_SESSION["database"];
$connectionInfo["UID"] = $_SESSION["username"];
$connectionInfo["PWD"] = $_SESSION["password"];
echo "midway";
$conn = sqlsrv_connect($serverName, $connectionInfo);
echo "Bye";
}
Когда я запускаю это, я получаю «Привет измерения на полпути», который предполагает, что страница работает, пока не достигнет линии соединения.
Я не уверен, какое расширение sqlsrv использовать.
Я посмотрел вокруг и вижу версии для 7 и 7.1, но не для 7.2.
Я добавил в extension=php_sqlsrv_71_nts_x86.dll
в конец php.ini (и файл существует в C:\Program Files (x86)\PHP\v7.2\ext
).
Любые указатели будут с благодарностью приняты. Я потратил пару дней на это и не думаю, что доберусь никуда.
Спасибо
Я столкнулся с той же проблемой. Позже я обнаружил, что использую более старую версию файлов Microsoft SQL для PHP.
Для PHP 7.2 вы должны использовать 7.2 версию MS PHP SQL
Эта версия не доступна через веб-сайт Microsoft. Я нашел это здесь https://github.com/Microsoft/msphpsql/releases
Как только я использовал эти файлы, все работает отлично. Я использовал 64-битные файлы.
Затем вам нужно добавить эти строки в файл php.ini
расширение = php_sqlsrv_72_nts.dll
расширение = php_pdo_sqlsrv_72_nts.dll
Я решил это ~
Версия PHP 7.2.4
pdo_sqlsrv: 5.3.0 + 11108
1. Загрузите правильную версию sqlsrv и sqlsrv pdo
2. поместите его в папку XAMPP \ PHP \ ext
3. после этого напишите строку в php.ini> настройки модуля
расширение = php_pdo_sqlsrv_72_ts.dll
расширение = php_sqlsrv_72_ts.dll
4.Let сделать тест для MSSQL все еще есть сообщение об ошибке для рекомендовать вам скачать ODBC Driver для SQL
5. Перейти к https://docs.microsoft.com/zh-tw/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-2017 затем загрузите нужный файл
(у меня утилиты командной строки 11 для SQL Server® X86)
6. Снова запустите test.php, все работает!
Что вам нужно определить
Тогда вы должны посмотреть на странице требований Вот
Проверьте версию PHP, которую вы используете, поэтому предпочтите ваш вопрос, это значит PHP 7.2
который SQL Server расширение версии 5.3 лучше всего подходит.
Затем перейдите к страница загрузки, выберите ссылку, которая определена с версией, которую вы предпочитаете. (в этом вопросе 5,3)
Файл, который вы скачали, будет самораспаковывающимся EXE файл, затем распакуйте в место, где вы хотите.
вы увидите список dll
файлы, подобные этим …
php_pdo_sqlsrv_7_nts_x64.dll
php_pdo_sqlsrv_7_nts_x86.dll
php_pdo_sqlsrv_7_ts_x64.dll
php_pdo_sqlsrv_7_ts_x86.dll
...
php_sqlsrv_72_ts_x86.dll
Какой смысл в названии этих файлов?
Как я уже говорил ранее, что вам нужно определить, чтобы выбрать правильный файл расширения. Расширению SQL Server нужны 2 файла с именем, начинающимися с php_pdo_sqlsrv_xxx
а также php_sqlsrv_xxx
,
Следующий номер значит для вашего PHP
версия, в этом случае PHP 7.2
, так что вам нужно выбрать имя файла имеет _72_
в своем.
Следующее число означает ваше время выполнения Поток Сейф или же Без резьбы, какой конкретно в имени файла _ts_
(Thread Safe) или _nts_
(Без резьбы).
Следующее число означает ваше время выполнения 32 бита или же 64 бита, какой конкретно в имени файла _x86
(32 бита) или _x64
(64 бита)
Итак, проверьте вашу PHP среду phpinfo()
или выполните команду php --version
на вашей консоли, а затем обратите внимание на сообщение, для моего компьютера это выглядит так …
PHP 7.2.12 (cli) (built: Nov 8 2018 06:12:12) ( ZTS MSVC15 (Visual C++ 2017) x86 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
Судя по этой информации, я получил PHP 7.2
, ZTS
значит Поток Сейф (Без резьбы будет NTS
) и x86
является 32 бита.
Итак, что я должен выбрать это расширение, которые являются php_sqlsrv_72_ts_x86.dll
а также php_pdo_sqlsrv_72_ts_x86.dll
Финал: скопируйте их на свой /php/ext
папка и редактировать php.ini
с этими двумя именами файлов.
// example with my case
extension=php_pdo_sqlsrv_72_ts_x86
extension=php_sqlsrv_72_ts_x86
Затем сохранить php.ini
файл, а затем перезагрузите сервер.
Проверьте свой результат, посмотрев на phpinfo.php
который ДОЛЖЕН иметь pdo_sqlsrv
на странице. Это означает, что ваша среда может работать с PHP и подключаться к SQL Server
сейчас.
Я наконец нашел решение. Все, что вам нужно сделать, это использовать эти расширения в php.ini
файл.
php_sqlsrv_72_ts_x86.dll
php_pdo_sqlsrv_72_ts_x86.dll
и перезапустите свой XAMPP.
Постскриптум «Я использую PHP 7.2.5»