web-dev-qa-db-ja.com

PHPアプリがクラッシュします:子pidが不正な命令で終了します(4)

ApacheとPHPを搭載したCentOS6サーバーがあります。私はいくつかのアプリケーションを実行し、このクラッシュを常に再現できます。いくつかの順次アクションの後、アプリが停止し、私が見つけた唯一のトレースは、error_log内の次のメッセージです。

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

同じアプリを別のホストにインストールしましたが、動作します。このため、問題はOSまたはApacheの構成にあると思います。このプロセスを強制終了する理由は何でしょうか?

更新1:両方のホストでmemory_limitが128Mに設定されています

アップデート2: SElinuxを無効にしても問題は解決しません

更新3:pcre-7.8からpcre-8.13への更新は役に立ちません

3
Anthony Ananich

数日前、仮想サーバーのRackspaceでホストされているWordpress 5.3.3で実行されているPHP 4サイトで、この同じエラーが発生し始めました。数年。現在CentOS6.8を実行しており、多くのOSとWordpressアップデート-CentOS5.xから始めたと思います!

とにかく、最初にPHP(5.3.3でCentOS 6.xによって保持されている)をアップグレードしようとしましたが、サードパーティの「remi」yumリポジトリを使用しました。

レミのRPMリポジトリ-ブログ: http://blog.famillecollet.com/pages/Config-en

PHP 5.6.22にアップグレードできます

それでも問題は解決しませんでしたが、エラーメッセージは改善されました。これで、Apacheログはサイレント(!)になりましたが、/ var/log/messagesは、Wordpress管理ページ:

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バグトラッカー: http://bugs.centos.org/view.php?id=10930#c26717

犯人を特定した:curl

この問題の突然の発生は、oldOpenStackハイパーバイザー(たとえば、何年も更新する必要があった古いRackspaceインスタンス)と(明らかに)競合する最近のcurlライブラリyum-updateが原因でした。以前は仮想マシンの新しい「フレーバー」に)そして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を再起動しました、そしてそれはすべて再び良かったです:-)

4
gigawatt

これは、nssパッケージのCentOSからの最後の更新が原因です。また、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
0
Kobaisy