2011-12-19 1 views
6

간혹 PHP 코드가 잘못 작성되어 500 오류가 발생합니다. Windows 7 노트북에서 Apache 2.2를 실행하고 있습니다. IDE로서 PhpStorm을 사용하기 시작했습니다.PHP 5.3 - 문제 해결 500 오류 - 디버깅 - 구문 분석 오류

이 오류를 catch하고 회선 번호를 알리는 가장 좋은 방법은 무엇입니까? 왜 OOP 관련 구문 오류는 500 개의 오류를 발생시키는 경향이 있으며 기능 문제는 정상적인 오류를 반환하는 경향이 있습니까?

구문 실수의 예 : 두 개의 콜론 대신에 하나의 콜론이있는 클래스에서 정적 메서드를 호출합니다.

업데이트 : 허용되는 답변과 모든 댓글을 참조하십시오.

+0

와 런타임에이 모든 것을 제어 할 수 있습니다? 코드가 구문 오류로 인해 구문 분석에 실패하면 로그에 컴파일 오류 세부 정보가 포함 된 500 개의 웹 서버가 표시됩니다 (사용자에게 표시되지 않음). – David

답변

12

PHP는 E_PARSE, E_ERROR 및 캐치되지 않은 예외와 같은 치명적인 오류가 발생하면 "500"으로 응답합니다. 500은 "내부 서버 오류"에 대한 HTTP 응답 코드입니다.이 요청을 처리하는 동안 어떤 일이 일어날 지 알 수 없습니다. 바람직하게는 E_ALL - - php.ini 파일에서

, 개발 시스템에서, 당신은 (적어도) E_NOTICEerror_reporting 수준을 설정해야하고 display_errors이 켜져 있는지 확인합니다. 이렇게하면 "500"오류를 포함하여 브라우저에 오류 메시지가 표시됩니다.

또한 Apache 오류 로그를 확인할 수 있습니다. 오류는 php.ini에서 log_errors이 활성화되어있는 한 거기에 나열됩니다. 기본적으로이 값은 <apache_ServerRoot>\logs\error.log입니다.

당신은 또한 당신이 "정상적인 오류"가 무슨 뜻인지 모르겠어요 ini_set()error_reporting()

+0

정적 상태는 E_PARSE 오류 여야합니다. 문제를 찾는 것이 너무 어려웠습니다. 더 좋은 방법이 있어야한다고 생각했습니다. – BuddyJoe

+0

error_reporting이 켜져 있습니다. +1 및 시간대 설정. – BuddyJoe

+0

@brunot'error_reporting'이 켜져있는 메시지가 보이지 않으면'display_errors'가 꺼져 있습니다. 오류 메시지가 출력되지 않는 상황이 있습니다. 그러나 이것은 내부적으로 PHP가 잘못되어 오류가 발생한 경우에만 실제로 발생합니다. 이런 일이 발생하면 일반적으로 아파치 로그에 디버깅 * 왜 * 발생했는지 알 수있는 메시지가 * 실제로 * 발생합니다. 이 상황에서 명령 줄 *에서 스크립트를 실행하면 유용한 오류 메시지가 표시되지만 항상 그런 것은 아닙니다. – DaveRandom

관련 문제