PHP가 오류 500을 반환하지만 기록된 내용이 없습니다.
내부 서버 오류(500)를 반환하는 php 애플리케이션이 있는데 오류 로그에 아무것도 표시되지 않아 문제가 발생했습니다.
이제 실행하려는 항목에 오류가 있다는 것을 알게 되었고, 일부 파일이 누락되었고 누락되지 않은 파일이 있다는 것을 알았지만 Apache 오류 로그에 표시되어야 합니다(그렇지 않으면 누락된 항목을 정확히 어떻게 알 수 있습니까).
테스트 스크립트를 만들었습니다. 동일한 vhost 구성에서 오류가 발생하면 해당 오류가 정상적으로 표시되므로 php/apache까지 모든 것이 올바르게 구성된 것 같습니다.오류 로그에 표시되는 특정 php 오류가 있습니까(php는 알림, 경고, 오류, 치명적인 오류 등을 표시하도록 구성됨)?
이것은 apt-get을 사용하는 unbuntu repo의 표준 apache 및 php를 사용하는 unbuntu 10.04에서 실행됩니다.
하여 원본파여찾기를 찾습니다.@
.
현재 "@" 오류 제어 연산자 접두사는 스크립트 실행을 종료하는 중요한 오류에 대한 오류 보고를 비활성화합니다.특히, "@"를 사용하여 특정 기능의 오류를 억제하고 해당 기능을 사용할 수 없거나 잘못 입력된 경우 스크립트는 이유에 대한 표시 없이 바로 종료됩니다.
그래도 500개의 오류가 있고 로그가 없으면 명령줄에서 실행을 시도할 수 있습니다.
php -f file.php
브라우저(서버에서)처럼 정확히 작동하지는 않지만 코드에 구문 오류가 있으면 콘솔에 오류 메시지가 표시됩니다.
새 다항을복새항붙다니로 ..htaccess
로 작성하여 웹 사이트의 폴더에 합니다.
php_flag display_errors on
php_flag display_startup_errors on
오류가 페이지에 직접 표시됩니다.
빠르게 디버그할 수 있는 가장 좋은 방법이지만 보안 침해가 될 수 있으므로 오래 사용하지 마십시오.
뭔가 오류 출력을 끄는 것 같습니다.(다른 스크립트가 오류 로그에 오류를 제대로 출력한다고 말씀하시는 것으로 알고 있습니다.)
할 수 (" " " " " " " " " " " " 를 합니다.echo 1; exit;
의 첫 1
그런 다음 해당 줄을 아래로 이동합니다.
이전에는 다음 두 가지 경우에 오류 로그가 없었습니다.
- 중인 에게 Apache 수정 .
php_error_log
java. - 이의구성인해오 500발다의 잘못된 으로 인해 했습니다.
.htaccess
예를 들어 잘못된 다시 쓰기 모듈 설정입니다.는 Apache 이경에 Apache 기됩니다에 됩니다.error_log
java.
Symfony 프로젝트의 경우 프로젝트의 앱/로그에서 파일을 확인해야 합니다.
은 이할 수 있습니다.
2 Symfony 2에서 은 500입니다.
그런데, 다른 프레임워크나 CMS는 이러한 종류의 동작을 공유합니다.
오류가 표시되지 않는 또 다른 이유는 다음과 같습니다.
저도 같은 문제가 있었습니다.제 경우에는 프로덕션 환경에서 소스를 복사했습니다. 그므로러로▁hence.ENVIRONMENT
에 index.php
로 설정되었습니다.'production'
이 이로인의 원인이 되었습니다.error_reporting
0(로깅 없음)으로 설정합니다. 로설 니다합정으로 .'development'
Apache 로그에 오류 메시지가 표시됩니다.
500은 데이터베이스 구성에서 세미콜론이 누락되었기 때문인 것으로 나타났습니다:-)
제게 일어난 또 다른 경우는, 제가 제 페이지 중 일부를 CURL로 처리했는데, 내부 서버 오류가 발생했고, 모든 오류 보고를 활성화했을 때도 아파치 로그에는 아무것도 없었습니다.
에서 제문는제에설서정한가제 CURL서를 입니다.curl_setopt($CR, CURLOPT_FAILONERROR, true);
그리고 나서 제 오류가 나타나지 않았습니다. 비록 오류가 있었지만, 이것은 오류가 PHP 오류가 아닌 프레임워크 수준에서 발생했기 때문에 로그에 나타나지 않았습니다.
네가 만약
- 양식을 제출할 때 간헐적으로 오류 500이 발생하고 있습니다.
- PHP 오류 메시지를 표시할 수 없습니다.
display_errors(-1)
그렇다면 문제는
- 웹 호스팅 회사에 특정 정규식 일치 여부를 확인하는 ModSecurity 플러그인이 설치되어 있을 수 있습니다.
다음을 통해 확인할 수 있습니다.
- 브라우저에서 볼 수 없는 상세 오류 로그가 포함된 /home/ your account/log/.../.../error.log로 이동
해결책은
- 웹 호스팅 제어판으로 이동하여 "추가 웹 보안?" 또는 유사한 설정을 찾은 다음 해당 도메인에 대해 해제합니다.당신은 당신의 웹 호스팅 회사에 특정한 정보를 구글에 검색할 수 있어야 합니다.
PHP 오류 로그를 활성화해야 합니다.
이것은 당신이 php 오류가 있을 때 웹 서버에서 무작위로 글리치가 발생하여 500 내부 오류가 발생하기 때문입니다(나도 같은 문제가 있습니다).
PHP 오류 로그를 보면 해결책을 찾아야 합니다.
php.ini에서 활성화하는 방법은 여기 문서를 참조하십시오.
파일 권한이 올바른지 확인합니다.Apache에 파일을 읽을 수 있는 권한이 없으면 로그에 쓸 수 없습니다.
이것이 문제가 되었을 때 저에게 일어난 일은 사이트가 너무 많은 메모리를 사용했기 때문에 오류 로그에 쓸 수 없거나 오류를 표시할 수 없었던 것 같습니다.명확하게 하기 위해, 이것은 워드프레스 사이트였습니다.서버의 메모리 제한을 늘리면 사이트가 다시 표시됩니다.
이 문제를 해결하고 나중에 제가 PHP 5.6에서 작업하고 있다는 것을 깨닫고 PHP 7.0으로 업그레이드한 다음 충돌하는 코드에 대한 git의 코멘트를 공개했습니다.저는 제 코드 <<<<<<>>에서 이런 것을 발견했지만 해결했습니다.
언급URL : https://stackoverflow.com/questions/7149030/php-returns-error-500-but-nothing-is-logged
'programing' 카테고리의 다른 글
기타 열을 기준으로 한 Excel 조건부 서식 (0) | 2023.08.11 |
---|---|
PowerShell을 사용하여 각 그룹에서 상위 5개 항목 선택 (0) | 2023.08.11 |
두 번째 줄에 있는 대소문자 생략 (0) | 2023.08.11 |
하나의 Tomcat 서버에 둘 이상의 Spring Boot 애플리케이션을 배포하는 경우 예외가 표시됩니다.어떻게 해결합니까? (0) | 2023.08.11 |
ASP.Net 2012 jQuery를 통한 중단 없는 검증 (0) | 2023.08.11 |