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 웹 사이트에서 갑자기 동일한 오류가 발생하기 시작했습니다. 현재 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

그 후 아파치를 다시 시작했더니 모든 것이 정상으로 돌아왔습니다. :-)

답변2

이는 nss 패키지에 대한 최신 CentOS 업데이트로 인해 발생합니다. 이것은 또한 아파치에 패닉을 일으켰습니다. 패키지를 다운그레이드하는 단계는 다음과 같습니다.

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

관련 정보