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

SQLSRv sqlsrv с официальной страницы Microsoft

Другие вопросы по тегам