CakePHP SQL Server Windows身份验证

时间:2010-08-23 13:28:59

标签: sql-server cakephp

我使用标准SQL Server身份验证将CakePHP连接到SQL Server数据库。如果我想通过Windows身份验证进行连接而有人试过这个吗?

首先,我认为它需要使用SQL Server drivers,而不是标准的MSSQL PHP驱动程序,以便PHP本身可以使用Windows身份验证。然后是替换CakePHP中所有位置的问题,假设它使用/app/core/database.php配置文件。

有没有人尝试过使用带有CakePHP的SQL Server驱动程序或更好的尝试Windows身份验证?或者只是可能它不值得麻烦。

1 个答案:

答案 0 :(得分:0)

用羽毛打击我,我会被诅咒所有......经过一些研究,我尝试在PHP中使用mssql驱动程序启用NT身份验证。

主要的PHP网站在评论中有一个很好的explanation

  

对于我的设置(Windows Server 2003,IIS 6,PHP 5.2.6,SQL Server 2005   企业)使用成功连接的关键   mssql_connect正在将PHP从ISAPI模式改为FastCGI模式。

     

1)我从Microsoft下载并安装了适用于IIS 6的FastCGI   http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1521

     

2)我   修改了我的PHP安装,使其在FastCGI模式下运行。

     

3)打开   fcgiext.ini并将其添加到最后。

     

[Types] php=PHP

     

[PHP] ExePath=c:\PHP\php-cgi.exe InstanceMaxRequests=10000   EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000

     

4)我在{; 1}添加了cgi.force_redirect=0默认超时时间   基于套接字的流(秒)“PHP.ini的部分

     

5)我确定了   我的SQL数据库设置为Windows身份验证模式,我也是   在php.ini中将mssql.secure_connection切换为on。

     

6)创造了一个   NT AUTHORITY \ NETWORK SERVICE的SQL登录并给它相应的   对我的数据库的权限。

     

7)重新启动服务器

然后我添加了IUSR(IIS域帐户)作为SQL Server的登录名和一个具有db_readers和db_writer权限的{mydatabase_iis}用户,它实际上有效。

重新创建的步骤:

  1. 在C:\ Program Files \ PHP \ php.ini中更改此行(即打开NT身份验证):       mssql.secure_connection =开启
  2. 重新启动IIS
  3. 在SQL Server Management Studio Express中
  4. 转到安全|登录(右键单击)|添加新登录...
  5. 单击“登录”输入框旁边的“搜索”
  6. 输入IUSR并单击检查名称(应该在下划线 - 请参见屏幕截图)
  7. 点击确定
  8. 选中“Windows身份验证”,然后单击“确定”
  9. 转到数据库| {MyDatabase} |安全|用户(右键单击)|新用户......
  10. 用户名{mydatabase_iis}
  11. 登录 - 点击“...”并找到IUSR登录
  12. 对于数据库角色,请勾选db_datareader和db_datawriter,嘿我们在(或至少我是)
  13. 似乎CakePHP非常乐意使用database.php文件作为数据库名称,我认为SQL Server只是忽略了那里给出的用户名和密码,并使用了Windows身份验证。