PHP на IIS не загружает расширение sqlsrv
Я пытаюсь собрать страницу, которая может отправлять данные из формы в базу данных MSSQL через PHP. У меня успешно установлен PHP (phpinfo()
работает нормально даже на удаленном компьютере), но не будет загружать расширение sqlsrv. Я знаю, что я редактирую право php.ini
файл, потому что у меня добавлено другое расширение (wincache) и он загружается нормально, подтверждено обоими phpinfo()
а также get_loaded_extensions()
,
Логи мне ничего не говорят. PHP Manager на IIS сообщает, что файлы расширения sqlsrv включены. Я перезапустил сайт, сервер и компьютер, и ничего не работает.
Я использую PHP 7.1.1 на компьютере с Windows 7 Ultimate. Он работает в режиме x64, Non-Thread Safe. Я удостоверился, что файлы расширения, которые я включил, являются x64, не потокобезопасными. Я не знаю, что еще проверить или какую дополнительную информацию мне нужно предоставить.
РЕДАКТИРОВАТЬ: я побежал php-cgi.exe
как предложено на этой странице, и вышло сообщение об ошибке:
[31-Mar-2017 22:38:12 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Program Files\iis express\PHP\v7.1\ext\php_sqlsrv_7_nts_x64.dll' - The specified procedure could not be found.
in Unknown on line 0
[31-Mar-2017 22:38:17 UTC] PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Program Files\iis express\PHP\v7.1\ext\php_pdo_sqlsrv_7_nts_x64.dll' - The specified procedure could not be found.
in Unknown on line 0
Означает ли это, что проблема в самих DLL расширения? Как бы я вообще починил это?
РЕДАКТИРОВАТЬ 2: ImClarky прибил проблему в том, что я, очевидно, использовал устаревшую версию расширения. У меня это работает, но теперь моя аутентификация не проходит по причинам, которые я не понимаю:
function connect_sql() {
/* Specify server and connection attributes */
$serverName = "(local)";
/* Get UID and PWD from app-specific files */
$uid = file_get_contents("C:\AppData\uid.txt");
$pwd = file_get_contents("C:\AppData\pwd.txt");
$connectionInfo = array("UID" => $uid,
"PWD" => $pwd,
"Database" => "database_name");
/* Connect using SQL Server Auth */
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn === false)
{
echo "Unable to connect.</br>";
//die(print_r(sqlsrv_errors(), true));
die(print_errors());
}
else {
echo "Connection Successful";
}
/* Free connection resources */
sqlsrv_close($conn);
}
Я дважды проверил, что я использую правильное имя пользователя и пароль, и даже вошел и создал совершенно новый логин, используя точный UID и пароль, который я пытаюсь. Я все еще получаю следующее сообщение об ошибке каждый раз:
Unable to connect.
SQLSTATE: 28000
code: 18456
message: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Login failed for user 'username'.
SQLSTATE: 28000
code: 18456
message: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Login failed for user 'username'.
1 ответ
Убедитесь, что вы добавили DLL-файл для папки с расширениями, используемой php.ini
Также выбрал правильный драйвер SQLSRv, соответствующий вашему работающему PHP