我试图整理一个可以通过PHP将表单中的数据提交到MSSQL数据库的页面。我已成功安装PHP(phpinfo()
即使在远程计算机上运行正常)但它不会加载sqlsrv extension。我知道我正在编辑正确的php.ini
文件,因为我添加了另一个扩展程序(wincache)并且加载正常,同时使用phpinfo()
和get_loaded_extensions()
确认。
日志没有告诉我任何事情。 IIS上的PHP管理器告诉我sqlsrv扩展文件已启用。我重新启动了网站,服务器和计算机,但没有任何工作。
我在Windows 7 Ultimate计算机上使用PHP 7.1.1。它以x64模式运行,非线程安全。我确保我启用的扩展文件是x64,非线程安全的。我不知道还有什么要检查,或者我需要提供更多信息。
编辑:我按this page建议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'.
答案 0 :(得分:0)