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.8からまでの更新はpcre-8.13役に立ちませんでした。

答え1

数日前、数年間、Rackspaceの仮想サーバーでホストされていたPHP 5.3.3を実行しているWordPress 4 Webサイトで突然同じエラーが発生し始めました。私は現在CentOS 6.8を実行しており、多くのOSとWordPressのアップデートが行われています。 CentOS 5.xで始まったようです!

とにかく最初はPHPのアップグレードを試みましたが(CentOS 6.x 5.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」の引用)をGoogleで検索すると、CentOSのバグレポートやディスカッションが発生します。

010930:カール - > centos 6.8アップデート後に不正なコマンド - CentOSバグトラッカー:http://bugs.centos.org/view.php?id=10930#c26717

犯人が確認されました:カール

この問題が突然現れるのは、最近のカールライブラリyum-update(明らかに)によるものです。古いOpenStackハイパーバイザー(たとえば、数年前に新しいVM「バージョン」に更新する必要があった老化したRackspaceインスタンス)は、WordPressがカールを使用して何かをダウンロードしようとするたびに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

これは、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

関連情報