HTTP错误500.0 - 服务器内部错误 发生了未知的FastCGI错误。

8
我在Windows Server 2008上运行IIS7,并使用Plesk 10。我有一个在Plesk下的网站,还有一个只在IIS上的网站。在Plesk下的网站可以成功运行php文件,但是另一个网站出现错误:
HTTP Error 500.0 - Internal Server Error 发生了一个未知的FastCGI错误
模块:FastCgiModule 通知:ExecuteRequestHandler 处理程序:PHP5-FastCGI-php 错误代码:0x8007010b 请求的URL:http://*.com:80/test.php 物理路径:C:\IIS*.com\test.php 登录方法:匿名 登录用户:匿名
PHP5-FastCGI-php的配置与Plesk下的网站完全相同。php-cgi.exe位于C:\Program Files (x86)\Parallels\Plesk\Additional\PleskPHP5\目录下。
编辑: 这是我的php.ini文件,但是我没有收到任何错误信息。
error_reporting = E_ALL & ~E_NOTICE
display_errors = On
display_startup_errors = Off
log_errors = On
error_log = "C:\Program Files (x86)\...\log\test.log"
error_log = syslog

尝试过在 Windows 日志中查找错误,但无法在 PHP 中记录错误... - HasanG
我已经包含了我的php.ini的一部分。与php相关的没有.log文件,也没有由php生成的错误。 - HasanG
这与编程有什么关系? - netcoder
6个回答

10

在文件夹中授予读取和执行列出文件夹内容Everyone用户组。

C:\Program Files (x86)\Parallels\Plesk\Additional\PleskPHP5

现在,每个应用程序池都可以使用 php。Plesk 的主要问题是,只有运行在属于 psacln 用户组成员的应用程序池标识下的站点才能正常运行。


1
谢谢!我最近才接触到 PHP 和 IIS,这让我免于疯狂。 - Dirk Hartzer Waldeck
太好了 - 我刚刚在IIS中重新创建了一个网站,其中包含一个由于应用程序池标识更改而破坏的PHP文件夹。在对PHP本身设置正确的权限后,现在一切都很好 - 发现得非常好!谢谢。 - Steven Sproat
1
给“Everyone”授予权限可能不是正确的选择。你试过“IIS_IUSRS”了吗? - Lex Li

9

前言:该解决方案适用于我的 Python Flask 应用程序。

如果您的文件权限正确,问题可能在于您的应用程序池设置。

  1. 进入 IIS 管理器
  2. 点击服务器的 应用程序池 选项卡
  3. 点击 设置应用程序池默认值...
  4. 进程模型 下的 身份验证 设置为 LocalSystem

未来的读者,我花了几天时间搜寻这个问题的解决方案。希望这可以在更短的时间内解决您的问题 :)


哦,我的天啊!就像你所说的那样,它在短短的时间内解决了我的问题。我已经挣扎了两天,差点要放弃了。非常感谢! - smoothumut
哦天啊...!好几天了..这么多文章和配置,终于在一秒钟内帮助了我。 - codeomascot
将应用程序池运行在LocalSystem下会使整个服务器暴露给攻击者。试图隐藏权限问题只会适得其反。在IIS上运行的Flask Web应用程序不需要进行应用程序池身份更改,可以参考https://halfblood.pro/running-flask-web-apps-on-iis-with-httpplatformhandler/。 - Lex Li

4

我认为比起授予所有人权限,更好的做法是授予内置的IIS组"IIS_IUSRS"对PHP文件夹的读取、读取和执行以及列出文件夹内容的权限。


3

我曾经遇到同样的问题,花了两天时间寻找解决方案。这是一个试错的过程。

错误代码为0x8007010b。

在IIS日志中可以查看详细信息。

#Fields: ... sc-status sc-substatus sc-win32-status time-taken
         ... 500       0            267             4

错误0x8007010b和267(使用命令NET HELPMSG 267)都表示“目录名无效”。

解决方案:

  1. 将完全访问权限授予IUSR:
    • 我的Web应用程序文件夹
    • 包含要运行的可执行文件的文件夹(在我的情况下是python.exe)
  2. 在IIS中转到->身份验证(双击它)->选择匿名身份验证(应启用)->编辑...->选择“指定用户”设置IUSR
  3. 选择根IIS(单击)->身份验证(双击它)->选择匿名身份验证(应启用)->编辑...->选择“指定用户”设置IUSR

完成步骤1-3后,错误500.0消失了。在我的情况下,第3步缺失。我认为这是一个重要的细节需要知道。

希望能对你有所帮助!


0

尝试在日志中查找更多信息。 然后尝试在您面板目录中查找所有*.log文件。最近修改时间的文件可能会有所帮助。

日志不仅可以在php.ini中定义。尝试搜索它们--不要相信任何*.ini文件 :)


0

我曾经遇到过同样的问题。每当我尝试进入phpmyadmin页面时,它就会给我返回500错误响应。要解决这个问题:

第一步)您需要在php.ini(在php文件夹中)中启用扩展“extension=php_gd2.dll”,“extension=php_mbstring.dll”和“extension=php_mysql.dll”(如果您已经这样做了,请转到第二步)。

第二步)在C:中创建一个名为“temp”的文件夹,并在该文件夹中创建另一个名为“phpsessions”的文件夹。完成后,转到php.ini(在php文件夹中),查找“session.save_path”,并将引号之间的任何内容替换为您创建的php会话位置,即“C:\ temp \ phpsessions”,不要忘记取消注释;

祝我的同行们好运:P


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接