PHP 应用程序崩溃:子进程 pid 因非法指令而退出 (4)

PHP 应用程序崩溃:子进程 pid 因非法指令而退出 (4)

我有一台带有 Apache 和 PHP 的 CentOS 6 服务器。我运行一些应用程序并且可以不断重现此崩溃。经过一些连续操作后,应用程序终止,我发现的唯一跟踪是 error_log 中的以下消息:

[Tue Jan 05 16:39:45 2016] [notice] child pid 1636 exit signal Illegal instruction (4)

我将相同的应用程序安装到不同的主机并且它可以工作。因此我认为问题出在操作系统或 Apache 配置上。杀死这个进程的原因可能是什么?

更新1:两台主机的 memory_limit 设置为 128M

更新2:禁用 SElinux 并不能解决问题

更新3:更新从pcre-7.8pcre-8.13没有帮助

答案1

几天前,我突然开始在运行 PHP 5.3.3 的 Wordpress 4 网站上遇到同样的错误,该网站已在 Rackspace 的虚拟服务器上托管了几年。它现在运行的是 CentOS 6.8,并且经历了许多操作系统和 Wordpress 更新——我想我们是从 CentOS 5.x 开始的!

无论如何,我首先尝试升级 PHP(由 CentOS 6.x 5.3.3 保留),但我使用了第 3 方“remi”yum 存储库:

Remi 的 RPM 存储库 - 博客: http://blog.famillecollet.com/pages/Config-en

这让我升级到 PHP 5.6.22

尽管这并没有解决问题,但它改进了错误消息。现在 apache 日志保持沉默(!),但每次我点击 WordPress 管理页面时 /var/log/messages 都会这么说:

kernel: php[23199] trap invalid opcode 
  ip:7ffa1074ad60 sp:7fff8bff6268 error:0 
  in libfreeblpriv3.so[7ffa106f8000+72000]

并在谷歌上搜索大多数有趣的单词(不是那么多的数字,并引用“libfreeblpriv3.so”,因为其他二进制文件有很多类似的点击)导致了这个 CentOS 错误报告和讨论:

010930:curl -> centos 6.8 更新后出现非法指令 - CentOS Bug Tracker:http://bugs.centos.org/view.php?id=10930#c26717

确定了罪魁祸首:卷曲

这个问题的突然出现是由于最近的一个curl库yum-update(显然)与老的OpenStack 虚拟机管理程序(例如,我们老化的 Rackspace 实例,几年前就需要更新为新的虚拟机“风格”),每当 Wordpress 尝试使用curl 下载某些内容时,它都会使 php 崩溃,并导致 apache 进程随之退出。

一条评论(在线程中很远的地方)解决了这个问题,这对我有用:

# How to downgrade curl:
# (updated with corrected links after those went all 404 on me)
wget http://vault.centos.org/6.7/os/x86_64/Packages/curl-7.19.7-46.el6.x86_64.rpm
wget http://vault.centos.org/6.7/os/x86_64/Packages/libcurl-7.19.7-46.el6.x86_64.rpm
rpm -Uvh --oldpackage curl-7.19.7-46.el6.x86_64.rpm 
rpm -Uvh --oldpackage libcurl-7.19.7-46.el6.x86_64.rpm
yum install -y yum-plugin-versionlock
yum versionlock curl
yum versionlock libcurl
service httpd restart

之后,我重新启动了 apache,一切又恢复正常了:-)

答案2

这是由 CentOS 对 nss 软件包的最新更新引起的。这也引起了apache的恐慌。以下是降级软件包的步骤:

export NSS_DISABLE_HW_AES=1 
yum -y downgrade nss nss-util nss-tools nss-sysinit
yum -y install yum-plugin-versionlock
yum versionlock add! nss-3.21.0-8.el6.x86_64 nss-sysinit-3.21.0-8.el6.x86_64 nss-tools-3.21.0-8.el6.x86_64 nss-util-3.21.0-2.el6.x86_64

相关内容