【问题标题】:Apache child process exited with status 255Apache 子进程以状态 255 退出
【发布时间】:2015-09-04 03:38:25
【问题描述】:

经过大量的搜索、尝试、修复、等待和哭泣,在我放弃之前,我想在这里为这个错误抓住最后的机会......

我们在 Microsoft Windows Server 2012、Apache/2.4.6 (Win64) OpenSSL/1.0.1e PHP/5.5.1 上运行。

定期,在 24 小时内至少 5-10 次,Apache 崩溃并重新启动。大多是两次。因为 PHP 崩溃了。

整个应用程序都是 PHP,所以将 php 配置为 FastCGI 并不能解决问题:Apache 不会崩溃,但 PHP 会。

这里有更多信息:

Windows 事件日志:

Faulting application name: httpd.exe, version: 2.4.6.0, time stamp: 0x51e441d6
Faulting module name: php5ts.dll, version: 5.5.1.0, time stamp: 0x51e849b0
Exception code: 0xc0000005
Fault offset: 0x00000000000572d8
Faulting process id: 0xac0
Faulting application start time: 0x01d0a96634f3d129
Faulting application path: C:\Apache24\bin\httpd.exe
Faulting module path: C:\PHP\php5ts.dll
Report Id: 06409cc4-1568-11e5-93ff-d43d7edb03a9
Faulting package full name:
Faulting package-relative application ID: 

Apache 日志:

[Thu Jun 18 06:13:44.284810 2015] [mpm_winnt:notice] [pid 2736:tid 392] AH00428: Parent: child process 2752 exited with status 255 -- Restarting.
[Thu Jun 18 06:13:44.487977 2015] [mpm_winnt:notice] [pid 2736:tid 392] AH00455: Apache/2.4.6 (Win64) OpenSSL/1.0.1e PHP/5.5.1 configured -- resuming normal operations
[Thu Jun 18 06:13:44.487977 2015] [mpm_winnt:notice] [pid 2736:tid 392] AH00456: Apache Lounge VC11 Server built: Jul 15 2013 20:45:22
[Thu Jun 18 06:13:44.487977 2015] [core:notice] [pid 2736:tid 392] AH00094: Command line: 'c:\\Apache24\\bin\\httpd.exe -d C:/Apache24'
[Thu Jun 18 06:13:44.487977 2015] [mpm_winnt:notice] [pid 2736:tid 392] AH00418: Parent: Created child process 4408
  • 在 PHP 日志中没有什么特别的,崩溃前也没有模式。
  • 并发连接也不会影响问题 - 即使我们的用户很少,也会发生这种情况。
  • MySQL?但是没有错误指向这个或者我看错了地方?
  • 窗户?如何判断?
  • PHP/Apache 配置?那么,还有什么……为什么?
  • 外星人...

主要问题是为什么 PHP 会崩溃?..

提前致谢!

【问题讨论】:

  • 我也遇到了同样的问题。但是运行 PHP 5.6 没有问题。我怀疑 PHP 上的 apache 模块有问题。 (因为 Apache 2.4 较新,很多变化可能会导致这样的事情)

标签: php mysql windows apache


【解决方案1】:

就我而言,日志中仅此而已。 仅:

 Parent: child process XXXX exited with status 255 -- Restarting

问题出在重定向代码中:

<?php
    header('HTTP/1.1 304 Not Modified');
    exit();
?>

此代码停止 apache 服务并启动新进程。 但并非所有时间......有时工作正常......有时会崩溃:(

正确的代码是:

<?php
    header('HTTP/1.1 304 Not Modified');
    die();
?>

更多信息: PHP: Utilizing exit(); or die(); after header("Location: ");

【讨论】:

    【解决方案2】:

    有一个已知错误:每当您包含的文件的文件大小为 4096 或更大时,php 模块和 apache 将停止工作。这不是开玩笑!

    【讨论】:

    • 示例:您有一个文件大小为 53248 字节的 .php 文件。当你包含或使用这个文件时,那么 apache 填充崩溃! 53248 / 4096 = 13 - 它是 4096 的倍数。这是 PHP 5.3.10 周围的一个错误,可能更早或更晚。 5.4 及更高版本不再有此错误(据我所知)。
    • 我们使用的是 PHP 5.5,所以不会是这种情况?
    【解决方案3】:

    我认为这个child process XYZ exited with status 255 在网上有几个不同的原因。大部分都是PHP相关的。

    我刚刚在 Windows、Apache 2.4.18 和 PHP 5.6.16 上遇到了同样的崩溃,当时我通过 Markdown 解析器从 http://parsedown.org 传递用户的帖子消息。通过在消息中包含用于标识符引用的反引号的 SQL 源代码来修复它,Markdown 期望源代码具有三个反引号。没有深入 Parsedown.php 以找出它到底发生在哪里,但它一定是带有这些反引号的东西。

    【讨论】:

      猜你喜欢
      • 2020-09-25
      • 2016-04-19
      • 2018-01-02
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      • 2022-07-05
      • 1970-01-01
      • 2012-05-05
      相关资源
      最近更新 更多