Apache 因 munmap_chunk() 崩溃:更新到 Jessie 上的 php7 后指针无效
Apache crashes with munmap_chunk(): invalid pointer after update to php7 on Jessie
我最近在我的服务器 运行 上更新到 php 7.0.4 运行 一个 Debian 8。
这是 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 应用程序 运行 对某些请求的大部分 time.But 都很好 我只是在没有可预见的原因的情况下生成了一个页面。
在这种情况下 /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 更新之前我没有看到这些错误。这里有什么问题?或者我怎样才能更好地找到来源?我在这里迷路了,因为这个错误是随机发生的。有时同一请求会成功,而一分钟前因此错误而失败。我会感谢你的帮助。
我们刚刚遇到了类似的情况,其中一个框架的组件会使我们失败:
*** Error in `php': munmap_chunk(): invalid pointer: 0x00007fdce5550060 ***
我不能告诉你关于错误本身的任何信息,但它的原因是 libpcre3
版本损坏,即 8.35-3.3+deb8u4
。我们是 运行 自定义构建,因为 PHP7 需要 libpcre3 的 JIT 支持,它不包含在我们的 Ubuntu 版本附带的默认支持中 (Ubuntu 14.04 LTS, 8.31-2ubuntu2.3
) .升级 libpcre3
版本解决了我们的问题。
我有相同的版本,通过升级 libpcre3
解决了问题,就像@Kevin Fischer 写的那样。
我正在升级libpcre3
包形式2:8.35-3.3+deb8u4(稳定)到2:8.38-3.1(测试)版本。
一步一步:
- 将行
deb http://ftp.us.debian.org/debian testing main contrib non-free
添加到 /etc/apt/sources.list
- 创建文件
/etc/apt/apt.conf.d/99default-release
,内容为:APT::Default-Release "stable";
- 运行 来自 root
的命令 apt-get update
- 运行 命令
apt-get -t testing install libpcre3
安装 libpcre3
包的测试版本
- 重新启动服务器并检查日志,错误应该会消失。
有关安装测试包的更多信息,请参阅 this question。
警告! 测试包可能无法正常工作!更新风险自负或等待新版本。
这是我们第二次遇到同样的问题。
它发生在 运行 PHP 7.0 在最新的 debian 上。
这将破坏任何类型的大量使用正则表达式的网站系统。
我们已经在 Neos (neos.io) 或 Typo3(从 6.2 开始)中看到了它。
以防无法使用测试版的libpcre3。
有人可以在 php.ini
中禁用即时编译
- 编辑您的 php.ini 添加
pcre.jit=0
您喜欢的任何地方
- 重新启动你的 Apache
- 开心
我也一直遇到那些令人讨厌的 Apache 崩溃,但上述和其他网站上的 none 解决方案对我有用。
经过大量的反复试验,我在我的系统上找到了根本原因。
我手动编辑了 PHP 配置并添加了两个扩展。两者都用于 Microsoft 的 SQL 服务器。
我将以下行添加到 php.ini
extension=sqlsrv.so
extension=pdo_sqlsrv
我没有注意到我忘记了 pdo 驱动程序中的“.so”。
如下所示更改行后,Apache 服务再次 运行 正常。
extension=sqlsrv.so
extension=pdo_sqlsrv.so
我最近在我的服务器 运行 上更新到 php 7.0.4 运行 一个 Debian 8。
这是 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 应用程序 运行 对某些请求的大部分 time.But 都很好 我只是在没有可预见的原因的情况下生成了一个页面。
在这种情况下 /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 更新之前我没有看到这些错误。这里有什么问题?或者我怎样才能更好地找到来源?我在这里迷路了,因为这个错误是随机发生的。有时同一请求会成功,而一分钟前因此错误而失败。我会感谢你的帮助。
我们刚刚遇到了类似的情况,其中一个框架的组件会使我们失败:
*** Error in `php': munmap_chunk(): invalid pointer: 0x00007fdce5550060 ***
我不能告诉你关于错误本身的任何信息,但它的原因是 libpcre3
版本损坏,即 8.35-3.3+deb8u4
。我们是 运行 自定义构建,因为 PHP7 需要 libpcre3 的 JIT 支持,它不包含在我们的 Ubuntu 版本附带的默认支持中 (Ubuntu 14.04 LTS, 8.31-2ubuntu2.3
) .升级 libpcre3
版本解决了我们的问题。
我有相同的版本,通过升级 libpcre3
解决了问题,就像@Kevin Fischer 写的那样。
我正在升级libpcre3
包形式2:8.35-3.3+deb8u4(稳定)到2:8.38-3.1(测试)版本。
一步一步:
- 将行
deb http://ftp.us.debian.org/debian testing main contrib non-free
添加到 /etc/apt/sources.list - 创建文件
/etc/apt/apt.conf.d/99default-release
,内容为:APT::Default-Release "stable";
- 运行 来自 root 的命令
- 运行 命令
apt-get -t testing install libpcre3
安装libpcre3
包的测试版本 - 重新启动服务器并检查日志,错误应该会消失。
apt-get update
有关安装测试包的更多信息,请参阅 this question。
警告! 测试包可能无法正常工作!更新风险自负或等待新版本。
这是我们第二次遇到同样的问题。
它发生在 运行 PHP 7.0 在最新的 debian 上。 这将破坏任何类型的大量使用正则表达式的网站系统。 我们已经在 Neos (neos.io) 或 Typo3(从 6.2 开始)中看到了它。
以防无法使用测试版的libpcre3。 有人可以在 php.ini
中禁用即时编译- 编辑您的 php.ini 添加
pcre.jit=0
您喜欢的任何地方 - 重新启动你的 Apache
- 开心
我也一直遇到那些令人讨厌的 Apache 崩溃,但上述和其他网站上的 none 解决方案对我有用。 经过大量的反复试验,我在我的系统上找到了根本原因。 我手动编辑了 PHP 配置并添加了两个扩展。两者都用于 Microsoft 的 SQL 服务器。 我将以下行添加到 php.ini
extension=sqlsrv.so
extension=pdo_sqlsrv
我没有注意到我忘记了 pdo 驱动程序中的“.so”。 如下所示更改行后,Apache 服务再次 运行 正常。
extension=sqlsrv.so
extension=pdo_sqlsrv.so