2013-12-15 3 views
8

[SOLVED]PHP/아파치 스크립트에 충돌 (분할 오류 (11)

내가 말 이전에 충돌 계속 로컬 호스트에서 PHP 스크립트를 (일부 포함하여)를 실행하고 있습니다.

오류 .보고 오페라, 사파리와 파이어 폭스가 빈 화면을 돌려 켜져 그러나 크롬 반환합니다.

:

Unable to load the webpage because the server sent no data. Error code: ERR_EMPTY_RESPONSE

아파치는 수익률을 기록

[Sun Dec 15 19:29:23 2013] [notice] child pid 34267 exit signal Segmentation fault (11)

처음으로 문제가 발생했을 때 PHP 5.5.6을 사용했습니다. PHP 5.4.21로 다운 그레이드 한 후에도 문제가 계속 발생합니다.

문제는 스크립트 안에 없습니다. 무작위로 두 줄의 코드 50 줄을 주석 처리하면 문제가 해결됩니다. 내 스크립트가 실행 시간이 오래 걸릴지 궁금하게 생각하게 만듭니다.

누구든지이 문제를 해결할 수있는 방법에 대한 제안 사항이 있습니까?

UPDATE :

문제가 로컬 호스트에 표시뿐만 아니라 아파치에 동일한 오류를주는 가상 코어 6.4과 PHP 5.3.3에서 실행 내 웹 서버에뿐만 아니라 않습니다.

[Sun Dec 15 23:15:10 2013] [notice] child pid 18409 exit signal Segmentation fault (11)

UPDATE2 : 명령 줄에서

실행 PHP는 제공 :

$ php index.php Fatal error: Call to undefined function mcrypt_create_iv() in Encrypt.class.php on line 135

$ php index.php
Segmentation fault: 11

Encrypt.class.php

에 라인 (135) 전에 코멘트를 배치 한 후 UPDATE3 : (해결 방법)

strace (strace php index.php) 명령 줄에서 색인을 실행 한 후에 쿼리 중 하나에서 문제가 발견되었습니다.

내 자신의 클래스 대신 PDO를 사용하여 디버깅을 한 후, 문제가 내 자신의 PDO 옵션 "ATTR_PERSISTENT => true"를 설정하고 있음을 알았습니다. 이 옵션을 비활성화하면 문제가 해결됩니다.

+1

명령 줄에서 스크립트를 실행 해보십시오. 세그먼테이션 오류가 발생하면 PHP 버전을 다시 설치해야합니다. 명령 줄에서 정상적으로 실행되면 Apache를 다시 설치해야합니다. 이 오류를 정확히 던지는 코드 줄은 무엇입니까? 아십니까? –

+0

@MisterMelancholy가 명령 줄에서 파일을 실행하면 135 행의 Encrypt.class.php에서 정의되지 않은 함수 mcrypt_create_iv()에 "치명적 오류"호출이 발생합니다.이 함수는 브라우저에서 제대로 작동합니다. 특정 줄에 오류가 없습니다. – webecreative

+0

PHP를 다운 그레이드 할 때 확장명이 .so 인 파일도 모두 다운 그레이드 되었습니까? 어쩌면 PHP 5.4 또는 5.3에서 PHP 5.5 mcrypt 확장을 사용하고 있습니다 (CLI에서 php.ini 파일을 읽지 않아도됩니다) – Brad

답변

3

는 갱신 3 : (솔루션) PDO의

Persisten 옵션은 슬프게도 충분히 제 성능을 끊었다.

strace로 해결책을 찾았습니다. strace (strace php index.php) 명령 줄에서 색인을 실행 한 후에 쿼리 중 하나에서 문제가 발견되었습니다.

쿼리를 분리 한 후 필자는 클래스를 기본 PDO로 대체했습니다. 내 클래스의 옵션을 다시 추가 할 때까지 추가 : (자신의 클래스 대신 PDO를 사용하여) 디버깅을 한 후 자신의 PDO 옵션 "ATTR_PERSISTENT => true"를 설정하고 있음을 알게되었습니다. 이 옵션을 비활성화하면 문제가 해결됩니다.