所有 PHP 网站在 IIS7 上停止工作,内部服务器错误 500

所有 PHP 网站在 IIS7 上停止工作,内部服务器错误 500

我使用 Windows Server 2008 上的 Web 平台安装程序安装了多个 drupal 7 站点。

到目前为止,它们都运行正常,没有任何问题,但最近内部服务器错误 500 开始出现(每隔很多请求就会出现一次),现在它发生在对任何 php 站点的所有请求上。

没有太多细节可讲,从它工作时到现在没有任何变化(好吧,无论如何我都不知道)

日志文件中充斥着如下消息:

[09-Aug-2011 09:08:04] PHP Fatal error:  Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:08:16] PHP Fatal error:  Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:08:16] PHP Fatal error:  Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:08:20] PHP Fatal error:  Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:08:22] PHP Fatal error:  Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:08:51] PHP Fatal error:  Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:09:56] PHP Fatal error:  Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:09:57] PHP Fatal error:  Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:12:13] PHP Fatal error:  Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:15:09] PHP Fatal error:  Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:15:09] PHP Fatal error:  Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:21:28] PHP Fatal error:  Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0
[09-Aug-2011 09:21:28] PHP Fatal error:  Allowed memory size of 262144 bytes exhausted (tried to allocate 261904 bytes) in Unknown on line 0

我曾尝试增加 php.ini 中的内存限制,如下所示:

memory_limit = 512MB

但这似乎也不能解决问题。

这是在 IIS 中的全局 php 配置中,当我逐个查看站点时,我注意到 PHP 似乎已被禁用。

PHP 未启用。注册新 PHP 版本以通过 FastCGI 启用 PHP

于是我尝试再次注册 php 版本

C:\Program Files\PHP\v5.3\php-cgi.exe

但当我尝试应用更改时,我得到了

执行此操作时出错详细信息:由于对象的当前状态,操作无效

除此之外似乎没有其他信息。我不知道为什么突然间 php 不再适用于网站。

PS:我已经重新启动了 IIS、服务器等...此服务器托管在 amazon S3 上,因此我为服务器提供了更多功能

更新 这似乎是两个不同的问题

  1. 我使用了 memory_limit=128MB 而不是 memory_limit=128M,
    请注意“M”而不是“MB”
  2. 128M 的 memory_limit 不够,必须将其增加到 512M

第一个问题导致每个请求都出现内部服务器错误。

增加到 512MB 似乎暂时解决了问题,但过了一段时间,服务器错误又回来了。请注意,IIS 中的 PHP 管理器仍然显示网站没有可用的 PHP(全局配置确实将其视为可用)

所以问题仍然没有解决

答案1

您可以尝试安装 IIS 的 PHP 管理器并查看 PHP 是否为您的站点正确配置?

下载地址:http://phpmanager.codeplex.com/

希望这会有所帮助。-mark

答案2

全新安装的 Drupal 不会占用太多内存。最繁忙的页面是“/modules”。如果任何其他页面占用更多内存,则意味着网站添加了缓慢/糟糕/错误的代码。这可能是第三方模块或缓慢的 SQL 查询。

尝试这个:

  • 转到 PHP 状态页面 (admin/reports/status/php) 并在那里检查内存限制。
  • 还可以在 settings.php 文件和 .htaccess 文件中设置内存限制。检查这些文件。
  • 安装 devel 模块。启用显示慢速 sql 查询并对其进行分析。一旦发现有问题的模块,只需将其禁用并再次检查内存使用情况和 sql 查询。

相关内容