2010-04-22 2 views
101

이것은 전에는 발생하지 않았습니다. 일반적으로 오류를 표시하지만 지금은 내게 500 내부 서버 오류를 제공합니다. 물론 오류를 표시하기 전에는 다른 서버였습니다. 이제 저는 새로운 서버를 사용하고 있습니다 (풀 루트를 가지고 있으므로 php.ini의 어딘가에 구성해야한다면 할 수 있습니다.) 아니면 아파치와 관련이 있을까요?어떻게하면 PHP가 500의 내부 서버 오류를 제공하는 대신 오류를 표시하게 할 수 있습니까?

필자는 다른 서버로 파일을 전송하고 오류를 찾기 위해 파일을 실행함으로써 그 문제를 해결하지 못했지만 너무 지루해졌습니다. 이 문제를 해결할 수있는 방법이 있습니까?

+3

을하지보십시오 PHP 문제. 아파치는 설정 문제 (예 : .htaccess의 잘못된 구문)가있을 때마다 500을 던집니다. 아파치 오류 로그에서 오류 메시지를 확인하십시오. –

답변

155

php.ini 파일의 error_reporting, display_errorsdisplay_startup_errors 설정을 확인하십시오. 각각 E_ALL"On"으로 설정해야합니다 (프로덕션 서버에서는 display_errors을 사용하지 않아야하므로이 기능을 사용 중지하고 배포 할 때 대신 log_errors을 사용하십시오). (모든 오류이 방법을 잡을 수 있지만) 또한 런타임에 그들을 설정하는 스크립트의 맨 처음에 (display_startup_errors 제외)이 설정을 변경할 수 있습니다 : 그 후

error_reporting(E_ALL); 
ini_set('display_errors', 'On'); 

다시 시작 서버를.

+1

display_errors를 어떻게 끄고 500 대신에 PHP 디스플레이 200 또는 404가 있습니까? – Pacerier

+0

2010 년에 있었는지 확실하지 않지만 2014 년에 APC와 같은 opcode 캐시를 사용하지 않는 한 서버를 다시 시작할 필요가 없습니다. –

+0

500 회의 오류가 발생하더라도 ... IIS에서? –

12

오류가 .htaccess (예 : 누락 된 rewrite_module)로 인해 발생하는 경우에도 여전히 500 내부 서버 오류가 표시됩니다.

+3

실제로 아파치 모듈이 누락되었습니다. 나는 오류 로그 (우분투의 기본값은 /var/log/apache2/error.log)를 보았다. –

2

PHP 코드에서 오류 표시를 활성화해도 나에게 도움이되지 않습니다. 제 경우에는 NGINX와 PHP-FMP를 사용하여 grep을 사용하여 로그 파일을 추적합니다. 예를 들어, 파일 이름이 mycode.php 인 경우 오류 500이 발생하지만 어떤 행인지 알 수 없습니다. 콘솔에서, 나는이 사용

/var/log/php-fpm# cat www-error.log | grep mycode.php 

을 그리고 출력이 있습니다

[04-Apr-2016 06:58:27] PHP Parse error: syntax error, unexpected ';' in /var/www/html/system/mycode.php on line 1458 

이것은 제가 오타가있는 라인을 찾을 수 있습니다.

7

PHP가 상태 500 오류를 발생시킬 수있는 구문 오류를 출력하려면 명령 줄에서 "php -l <filename>"('L')을 사용하십시오. 이 같은 출력 일 것이다 :

PHP 구문 분석 오류 : 구문 오류가 라인에 < 파일 이름 >에서 '}', 예상치 못한 18

+1

이것은 정말로 나를 도왔다! Tail'ing 내 오류 로그 아무것도 생산,하지만이 보석 완벽하게 일하고 내 구문 오류 및 줄 번호를 표시합니다. 클래스 파일을 디버깅 중이 었습니다. 감사! –

0

확인하기 위해주의

display_errors 

또는

error_reporting 
경우

은 ini 파일의 다른 곳에서 활성화되어 있습니다 (주석이 아닙니다).

내 개발 서버가 으로 업그레이드 한 후 오류를 표시하는 것을 거부했습니다. 쿠분투 16.04 - php.ini를 여러 번 확인했는데 ... diplay_errors = off였습니다. 내 약 100 줄 내

display_errors = on; 

마지막으로 기억하십시오!

0

다른 모든 시도가 실패하면 (예 :bash에서) 모든 파일과 디렉토리를 "away"하고 하나씩 다시 추가합니다.

방금 ​​.htaccess 파일이 존재하지 않는 .htpasswd 파일을 참조하고 있다는 것을 알았습니다. (#silly)

2

, ... 그것은 나를 위해 일한,

MAMP > conf > [your PHP version] > php.ini 

하지만

MAMP > bin > php > [your PHP version] > conf > php.ini 

가서 거기를 변경하지 않는 아파치 문제 같은 소리

관련 문제