我刚刚从使用 php5isapi.dll 的 PHP 5.2.3 迁移到使用 FastCGI 和 php-cgi.exe 的 PHP 5.3.0。在此站点上,我有用于 windows/ntlm/http 身份验证的钩子,执行如下操作:

if(empty($_SERVER["REMOTE_USER"]))
{
 header("HTTP/1.1 401 Unauthorized"); 
 exit;
}
$winuser = $_Server["REMOTE_USER"];

//parse $winuser to make sure it is on my domain, and can login to the site.
//set a cookie specifying that this user is logged in
//redirect to site.

这在带有 isapi 的 PHP 5.2.3 下运行得非常好。现在我已经转移到 IIS6 上的 FastCGI,它坏了。它对我有用,但我的服务器上有管理员。没有管理员的人(大多数人)会看到以下内容的一些变体:

FastCGI Error
The FastCGI Handler was unable to process the request. 
________________________________________
Error Details:
•   The FastCGI process exited unexpectedly 
•   Error Number: -1073741819 (0xc0000005). 
•   Error Description: Unknown Error 
HTTP Error 500 - Server Error.
Internet Information Services (IIS)

我尝试过仔细阅读文档和日志文件,但似乎没有取得任何进展。我实际上并不希望使用远程用户名来访问我的 .php 文件,我只想获取名称并与我的数据库匹配。匿名用户应该仍然是实际执行 php 的人。

有线索吗?

有帮助吗?

解决方案

取得了一些进展,但还没有真正的解决方案。

  1. 遵循这里的建议很有用: FastCGI 文档尤其是 安全建议 部分。这将我的错误从 FASTCGI 500 中取出并放入 php 错误日志中。

  2. 看来 PHP/IIS/FastCGI 想要通过任何用户尝试验证而不是匿名用户来访问会话目录(我的是 C:\PHP\Session)。

  3. 将该文件夹的“修改”权限设置为“所有用户”可以使站点按需要运行。然而,我想知道这样做会造成多大的安全漏洞......

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top