문제

한 페이지에서 여러 ajax 호출을하고 있습니다. 모든 통화는 반환 응답을 성공적으로 반환하지만 마지막 호출 (다른 AJAX 호출과 관련이없는)은 응답 코드 (FireBug가 말한대로)로 500 내부 서버 오류를 반환합니다. 그러나 오류 코드에도 불구하고 해당 AJAX 호출에서 올바른 컨텐츠가 반환됩니다.

놀랍게도, php.ini에서 display_errors 옵션을 켜짐으로 설정하면 오류가 사라지고 페이지에서 렌더링됩니다. 파일로 설정 오류 로그가 있지만 위에서 언급 한 내부 서버 오류에 해당하는 오류가 기록되지 않습니다.

그건 그렇고, 나는 Apache, JQuery, Php5, APC를 사용하고 있습니다 (관련이있는 경우).

올바른 솔루션이 없습니다

다른 팁

가능한 한 제한된 정보를 고려할 때 가장 가능성이 높은 답변은 PHP가 치명적인 오류에 도달하고 있다는 것입니다. ~ 후에 예상 출력에 반향을 일으켰습니다.

테스트하려면 : 마지막으로 실행되는 라인에서 무언가를 반향하십시오. 그 에코가 나타나지 않으면 PHP 스크립트가 어딘가에 멈추고 있다는 것을 알고 있습니다. 그 시점에서 그것은 디버깅과 추적의 문제 일뿐입니다.

그것은 매우 이상합니다 ... 당신은 어떤 종류의 라이브러리 나 다른 코드를 사용하고 있습니까? 당신은 글을 쓰지 않았습니다 실제 반환 된 값과 독립적으로 상태 코드 헤더에 영향을 줄 수 있습니까?

나는이 똑같은 문제를 가졌으며 숨겨진 치명적인 오류로 판명되었습니다. Display_Errors를 켜고 오류를 찾아 오류를 일으키고 Display_Errors를 끄십시오 (아마도 Display_Errors를 개발하고 생산에서 꺼내는 것이 가장 좋습니다).

PHP 통역사는이 요청 중에 단순히 충돌합니다. 나는 PHP를 충돌시킬 수있는 잠재적 인 이유를 알고있다 :

GCC 4.3의 일부 버그로 인해이 버전의 컴파일러로 컴파일 된 PHP는 예외를 구현하는 것이 있습니다. 사소한 사례의 경우 스크립트로 예외를 던지면 SEGFAULT가 발생하고 스크립트 실행이 종료됩니다. 이 논문은 몇 달 전에 PHP 팀에 의해 확인되었습니다.

그것이 당신에게 발생하는지 여부를 확인하려면 간단히 확인할 수 있습니다. 스크립트 실행이 충돌하는 곳 및 예외를 던지자 직후에 발생하면 집에 있습니다. 확인은 배치하여 수행 할 수 있습니다 die() 더 나아가서 스크립트를 쫓아 내고, 무슨 일이 일어나는지보십시오. 또 다른 방법은 사용하는 것입니다 declare(ticks=1) 마지막 항목을 저장하는 진드기 기능 등록 debug_backtrace() 모든 진드기 파일에, 보고서를받을 수 있도록 스크립트가 실행되는 방법.

나는 다소 비슷한 문제를 겪었고 문제는 스크립트가 예외를 던지고 있으며 캐치 블록이 없어서 예외가 표면으로 거품이 날리고 치명적인 오류 "uncaught Exception"이 발생했다는 것이 었습니다. 표준 PHP 동작이지만 하나의 특정 서버에서는 200 OK 대신 500 내부 서버 오류의 응답 코드를 얻게됩니다. 예외를 제거하고 Die () 문으로 교체하면 해당 서버의 문제가 해결되었습니다 (처음에는 예외로부터 혜택을받지 못하는 간단한 스크립트이기 때문에 그렇게 할 수 있습니다).

문제는 종종 다음의 Ione에 의해 고정됩니다. 스크립트 권한, 권리 및 소유권을 확인하십시오. Ajax 호출 후 반환 된 경우 치명적인 오류가 없는지 확인하십시오. 우연히 ASCII 모드에서 파일을 UNIX로 고화하지 않았는지 확인하십시오.

더 많은 정보를 읽을 수 있습니다 http://www.larshemel.com/forum/500_internal_server_error

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top