Apache崩溃与munmap_chunk():在Jessie

时间:2016-03-09 10:35:55

标签: apache memory debian php-7

我最近在运行Debian 8的服务器上更新到php 7.0.4。

这是dpkg -l | grep php给我的:

ii  libapache2-mod-php7.0          7.0.4-1~dotdeb+8.1           amd64        server-side, HTML-embedded scripting language (Apache 2 module)
ii  php-common                     21-1~dotdeb+8.1              all          Common files for PHP packages
ii  php-readline                   21-1~dotdeb+8.1              all          readline module for PHP [default]
ii  php7.0                         7.0.4-1~dotdeb+8.1           all          server-side, HTML-embedded scripting language (metapackage)
ii  php7.0-cli                     7.0.4-1~dotdeb+8.1           amd64        command-line interpreter for the PHP scripting language
ii  php7.0-common                  7.0.4-1~dotdeb+8.1           all          Common files for packages built from the PHP source
ii  php7.0-curl                    7.0.4-1~dotdeb+8.1           amd64        CURL module for PHP
ii  php7.0-gd                      7.0.4-1~dotdeb+8.1           amd64        GD module for PHP
ii  php7.0-imap                    7.0.4-1~dotdeb+8.1           amd64        IMAP module for PHP
ii  php7.0-intl                    7.0.4-1~dotdeb+8.1           amd64        Internationalisation module for PHP
ii  php7.0-json                    7.0.4-1~dotdeb+8.1           amd64        JSON module for PHP
ii  php7.0-mcrypt                  7.0.4-1~dotdeb+8.1           amd64        libmcrypt module for PHP
ii  php7.0-mysql                   7.0.4-1~dotdeb+8.1           amd64        MySQL module for PHP
ii  php7.0-opcache                 7.0.4-1~dotdeb+8.1           amd64        Zend OpCache module for PHP
ii  php7.0-readline                7.0.4-1~dotdeb+8.1           amd64        readline module for PHP

我的php应用程序大部分时间运行正常。但是在某些请求中,我只是在没有可预见的原因的情况下生成了一个页面。

在这种情况下/var/log/apache2/error.log州:

*** Error in `/usr/sbin/apache2': munmap_chunk(): invalid pointer: 0x00007efc6ddb4a50 ***
*** Error in `/usr/sbin/apache2': munmap_chunk(): invalid pointer: 0x00007efc6dd5cad0 ***
[Wed Mar 09 11:26:44.940931 2016] [core:notice] [pid 28486] AH00052: child pid 29338 exit signal Aborted (6)
[Wed Mar 09 11:26:44.941017 2016] [core:notice] [pid 28486] AH00052: child pid 29344 exit signal Aborted (6)
*** Error in `/usr/sbin/apache2': munmap_chunk(): invalid pointer: 0x00007efc6dd5cad0 ***
[Wed Mar 09 11:26:46.942581 2016] [core:notice] [pid 28486] AH00052: child pid 29347 exit signal Aborted (6)

我会提供更多信息:

语法:

$ apachectl configtest
Syntax OK

版本:

apachectl -v
Server version: Apache/2.4.10 (Debian)
Server built:   Nov 28 2015 14:05:48

在php更新之前,我没有看到这些错误。这有什么不对?或者我怎样才能更好地找到来源?我迷失在这里,因为这个错误发生了一些随机。有时同一个请求会在一分钟前成功解决这个错误。我会恭喜你的帮助。

4 个答案:

答案 0 :(得分:12)

这是我们第二次受到同样问题的严重打击。

在最新的debian上运行PHP 7.0时会发生这种情况。 这将破坏大量使用正则表达式的任何类型的网站系统。 我们已经看到它是Neos(neos.io)或Typo3(从6.2开始)。

如果无法使用libpcre3的测试版本。 有人可以在php.ini

中禁用及时编译
  1. 在任意位置编辑您的php.ini添加pcre.jit=0
  2. 重启你的apache
  3. 快乐

答案 1 :(得分:2)

我有相同的版本,并通过升级libpcre3解决,如@Kevin Fischer写道。

我升级libpcre3包形式 2:8.35-3.3 + deb8u4 (稳定)到 2:8.38-3.1 (测试)版本。

一步一步:

  1. 将行deb http://ftp.us.debian.org/debian testing main contrib non-free添加到/etc/apt/sources.list
  2. 使用内容/etc/apt/apt.conf.d/99default-release
  3. 创建文件APT::Default-Release "stable";
  4. 从root
  5. 运行命令apt-get update
  6. 运行命令apt-get -t testing install libpcre3以安装libpcre3 package
  7. 的测试版本
  8. 重新启动服务器并检查日志,错误应该消失。
  9. 有关安装测试包的详细信息,请参阅this question

    警告!测试包可能无法正常工作!更新风险或等待新版本。

答案 2 :(得分:1)

我们刚刚遇到类似情况,我们的框架组件之一会让我们失败:

*** Error in `php': munmap_chunk(): invalid pointer: 0x00007fdce5550060 ***

我无法告诉你关于这个bug本身的任何信息,但它的原因是一个损坏的libpcre3版本,即8.35-3.3+deb8u4。我们正在运行自定义构建,因为PHP7需要libpcre3的JIT支持,它不包含在我们的Ubuntu版本附带的默认版本中(Ubuntu 14.04 LTS, 8.31-2ubuntu2.3)。升级libpcre3版本为我们解决了问题。

答案 3 :(得分:0)

我也经常遇到那些讨厌的apache崩溃,但上面和其他网站上的解决方案都没有为我工作。 经过大量的反复试验,我发现了系统的根本原因。 我手动编辑了PHP配置并添加了两个扩展。两者都适用于Microsoft的SQL Server。 我将以下行添加到php.ini

extension=sqlsrv.so
extension=pdo_sqlsrv

我没有注意到我对#34; .so"在pdo司机。 更改了如下所示的行后,Apache服务再次正常运行。

extension=sqlsrv.so
extension=pdo_sqlsrv.so