php script 파일을 파싱한 결과가 아파치 서버로 리턴되지 않는
안녕하세요. 전 php 개발자인데요.
얼마전에 제가 개발한 사이트에서 이상한 현상이 발생했는데 해결 방법을 찾을 수가 없네요. ^^;;
제 사이트는 solaris 2.8 에서 apache server 1.3.26, php 4.0.6 을 이용하여 사이트를 운영중입니다. php 는 shared apache module 로 컴파일했습니다.
apache server log 에 php request 결과가 http status 는 "200", http body size 가 "-" 인 경우가 하루에 5 ~ 6 번씩 남아있습니다.
이런 log 가 남는 이유는 php script 를 파싱한 결과가 apache server 의 타임아웃 시간 5분을 지나도 return 되지 않았기 때문인데, 왜 php script 를 파싱한 결과가 return 되지 않는지 이유를 모르겠습니다.
php script 를 파싱한 결과가 return 되지 않는 이유를 찾기 위해 syslog() 로 php engine 의 send_php(), apache_php_module_main(), php_execute_script(), zend_execute_scripts() 에 log 를 남겼습니다.
해당 경우에 log 는 apache_php_module_main() 까지만 남아 있습니다. 그러므로 php_execute_script() 이전에 있는 php_request_startup() 에 문제가 발생한다고 생각되지만, 정확한 원인을 찾지는 못했습니다.
해당 경우에 segmentation fault 로 인해 apache process 가 죽지는 않았습니다.
이러한 현상이 발생하는 원인과 해결방법을 아시는 분은 알려주세요.
그럼 부탁드립니다.
그리고 새해 복 많이 받으세요. ^_____^
php쪽에서 뭔가 문제가 있었다면..
php.ini에서 에러메시지 출력 레벨을
error_reporting = E_ALL 로 하고
log_errors = On 를 하게되면
에러가 아파치의 error_log에 쌓입니다.
이 정보와 같이 분석하는게 좋지 않을까 생각합니다.
위에 것은 아파치가 php 요청을 처리할때 backtrace의 내용입니다.
소스레벨에소 체크를 좀더 해보실려면
#2 번인 zend_execute_scripts에서 어디까지 실행을 했나
확인해 보는 것도 좋겠네요 (저 함수에서 php 파싱과 실행이 이루어 지더군요)
울랄라~ 호기심 천국~!!
http://www.ezdoum.com
댓글 달기