2015-04-14 16 views
6

Tôi đã thực hiện rất nhiều nghiên cứu cố gắng để có được mã PHP của tôi được lưu trữ trên IIS để kết nối với cơ sở dữ liệu MSSQL của tôi. Tôi dường như không thể tìm ra vấn đề. Đa co ai đi ngang qua đây chưa?Tại sao tôi không thể kết nối với cơ sở dữ liệu mssql bằng PHP?

<?php 

$serverName = 'AEGIS-PC\SQLEXPRESS'; 
$connectionInfo=array('Database'=>'tttb_db'); 

$con = sqlsrv_connect($serverName, $connectionInfo); 
if($con){ 
    echo 'Connection established<br />'; 
} 
else { 
    echo 'Connection failed<br />'; 
    die(print_r(sqlsrv_errors(), TRUE)); 
} 

?> 

Update, chúng tôi có một lỗi mới:

Connection failed Array ([0] => Array ([0] => 28000 [SQLSTATE] => 28000 [1] => 18456 [code] => 18456 [2] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Login failed for user 'NT AUTHORITY\IUSR'. [message] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Login failed for user 'NT AUTHORITY\IUSR'.) [1] => Array ([0] => 42000 [SQLSTATE] => 42000 [1] => 4060 [code] => 4060 [2] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Cannot open database "tttb_db" requested by the login. The login failed. [message] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Cannot open database "tttb_db" requested by the login. The login failed.) [2] => Array ([0] => 28000 [SQLSTATE] => 28000 [1] => 18456 [code] => 18456 [2] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Login failed for user 'NT AUTHORITY\IUSR'. [message] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Login failed for user 'NT AUTHORITY\IUSR'.) [3] => Array ([0] => 42000 [SQLSTATE] => 42000 [1] => 4060 [code] => 4060 [2] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Cannot open database "tttb_db" requested by the login. The login failed. [message] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Cannot open database "tttb_db" requested by the login. The login failed.))

máy chủ SQL của chúng tôi đang sử dụng Windows Authentication và tên máy chủ của chúng tôi là AEGIS-PC\SQLEXPRESS với tên người dùng và mật khẩu được khối màu xám. Tôi không thể nghĩ lý do đăng nhập của chúng tôi sẽ thất bại. Chúng ta đang làm gì sai?

+2

Bạn có thể chứng minh rằng máy chủ IIS của bạn đang chạy các mã như PHP ở tất cả? Hãy thử tạo một trang chỉ có ' 'và đảm bảo màn hình thông tin đang được hiển thị. – PaulProgrammer

+0

Bạn có báo cáo lỗi được bật cho mã của mình không? – Maximus2012

+2

Bạn đã kiểm tra PHP đang hoạt động trên máy của mình chưa và bạn có các phần mở rộng PHP cần thiết để kết nối với SQL Server không? Bạn đang chạy phiên bản PHP nào? Thực hiện một 'phpinfo();' trong mã của bạn để xem xét các phần mở rộng. – halfer

Trả lời

3

Có một vài điều mà có thể gây ra vấn đề như vậy:

1.) module của bạn không được nạp bởi vì VC9 của nó thay vì nếu VC11. Kiểm tra phiên bản trình biên dịch mà hệ thống của bạn sử dụng và cài đặt trình điều khiển chính xác.

2.) Kiểm tra phiên bản PHP của bạn và sử dụng trình điều khiển chính xác cho Phiên bản PHP của bạn mà bạn có thể kiểm tra trong số phpinfo().

3.) Đừng quên cài đặt MSSQL Native Client nếu không bạn không thể kết nối với cơ sở dữ liệu của mình, đó là vấn đề tôi có mọi lúc.

Mã của bạn có vẻ tốt và nếu bạn nhận được thông báo lỗi sqlsrv_connect không được tìm thấy là tín hiệu cho biết mô-đun chưa được tải.

https://www.microsoft.com/en-us/download/details.aspx?id=20098

+0

Chúng tôi đã tải mô-đun của mình! Bây giờ chúng tôi đã gặp lỗi mới – Benschneider06

+0

Đã cập nhật câu hỏi gốc – Benschneider06

1

Bạn cần phải thêm một tài khoản dịch vụ cho tài khoản của hệ thống 'NT AUTHORITY \ IUSR' để truy cập cơ sở dữ liệu IIS.

Đây là phần quan trọng của chuỗi lỗi:

[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Login failed for user 'NT AUTHORITY\IUSR' 

Khi ai đó chạm website và kịch bản php cố gắng truy cập vào SQL Server, nó nó sử dụng tài khoản hệ thống IIS, không phải người dùng trên tài khoản của trang web. Bạn có thể sử dụng IIS xác thực cửa sổ cho yêu cầu DB. Xem bên dưới để bật Xác thực Windows với IIS: https://technet.microsoft.com/en-us/library/cc754628%28v=ws.10%29.aspx

Cảnh báo công bằng, nó chỉ hoạt động nếu người dùng nhấn trang web nằm trong cùng miền AD với máy chủ web.

Hãy cẩn thận những đặc quyền bạn chỉ định cho tài khoản hệ thống IIS, nếu bạn đi tuyến đường đó.

1

Đó chỉ là một giải pháp đơn giản mà tôi đã tìm thấy. checkout http://blog.sqlauthority.com/2009/08/20/sql-server-fix-error-cannot-open-database-requested-by-the-login-the-login-failed-login-failed-for-user-nt-authoritynetwork-service/

chỉ là một vài bước.

  1. Đến SQL Server >> Security >> Logins và nhấp chuột phải vào NT AUTHORITY \ NETWORK DỊCH VỤ và chọn Properties
  2. Trong màn hình vừa được khai trương của Login Properties, hãy vào “User Mapping” tab. Sau đó, trên tab “Ánh xạ người dùng”, chọn cơ sở dữ liệu mong muốn - đặc biệt là cơ sở dữ liệu mà thông báo lỗi này được hiển thị. Trên màn hình thấp hơn, hãy kiểm tra vai trò db_owner. Nhấp vào OK.

này nên khắc phục vấn đề của bạn

Các vấn đề liên quan