ฉันกำลังพยายามเชื่อมต่อกับ MS-SQL Server จาก PHP-8.0 (โฮสต์บน IIS-10 localhost) โดยใช้ SQL Server Driver สำหรับ PHP เช่น SQLSRV-5.9 ขณะเชื่อมต่อจากหน้า PHP ถ้าฉันใช้ SQL Server Authentication จะทำการเชื่อมต่อทันที แต่ในขณะที่ใช้ Windows Authentication มันแสดงข้อผิดพลาดในเบราว์เซอร์ว่า:
ไม่สามารถสร้างการเชื่อมต่อได้
อาร์เรย์ ( [0] => อาร์เรย์ ( [0] => 28000 [SQLSTATE] => 28000 [1] => 18456 [code] => 18456 [2] => [Microsoft][ODBC Driver 17 for SQL Server][ SQL Server]การเข้าสู่ระบบล้มเหลวสำหรับผู้ใช้ 'NT AUTHORITY\IUSR' [ข้อความ] => [Microsoft][ไดรเวอร์ ODBC 17 สำหรับ SQL Server][SQL Server]การเข้าสู่ระบบล้มเหลวสำหรับผู้ใช้ 'NT AUTHORITY\IUSR') [1] => อาร์เรย์ ( [0] => 28000 [SQLSTATE] => 28000 [1] => 18456 [code] => 18456 [2] => [Microsoft][ODBC Driver 17 for SQL Server][SQL เซิร์ฟเวอร์]การเข้าสู่ระบบล้มเหลวสำหรับผู้ใช้ 'NT AUTHORITY\IUSR' [ข้อความ] => [Microsoft][ไดรเวอร์ ODBC 17 สำหรับ SQL Server][SQL Server]การเข้าสู่ระบบล้มเหลวสำหรับผู้ใช้ 'NT AUTHORITY\IUSR' ) )
สภาพแวดล้อมของฉันคือ Windows 10 Pro เวอร์ชัน 21H2 64 บิต ใน SQL Server ของฉัน มีการเปิดใช้งานทั้ง Windows Authentication และ SQL Server Authentication และฉันสามารถเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้ทั้งสองเซิร์ฟเวอร์ผ่าน SQL Server Management Studio แล้วอะไรที่ทำให้โค้ด PHP ของฉันหยุดเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้ Windows Authentication ทั้ง PHP และ SQL Sever อยู่บนพีซีเครื่องเดียวกัน ผมทำอะไรผิดหรือเปล่า? เนื่องจากฉันใหม่ใน PHP คุณช่วยอธิบายด้วยตัวอย่างง่ายๆ ได้ไหม
รหัส connect-db.php ของฉันดังต่อไปนี้ สังเกตว่าฉันใช้สตริงการเชื่อมต่อสำหรับทั้งการรับรองความถูกต้องของ Windows และ SQL Server อย่างไร
?php
$serverName = "(ในเครื่อง)"; // เลือกใช้หมายเลขพอร์ต (1433 ตามค่าเริ่มต้น)
$connectionString = array("ฐานข้อมูล"=>"TestDB"); // สตริงการเชื่อมต่อการรับรองความถูกต้องของ Windows
// $connectionString = array("UID"=>"sa","PWD"=>"sa","Database"=>"TestDB"); // สตริงการเชื่อมต่อการรับรองความถูกต้องของเซิร์ฟเวอร์ SQL
$conn = sqlsrv_connect($serverName, $connectionString); // เชื่อมต่อกับเซิร์ฟเวอร์
ถ้า ($ conn === เท็จ) {
echo "ไม่สามารถเชื่อมต่อได้<br/>";
ตาย (print_r (sqlsrv_errors (), จริง));
} อื่น {
echo "สร้างการเชื่อมต่อสำเร็จ<br/>";
}
sqlsrv_close($conn); // ปิดทรัพยากรการเชื่อมต่อ
?>
ขอบคุณและขอแสดงความนับถือ!