테스트 사이트 - 개발 중인 베타 버전입니다

htaccess에서 404 페이지는 작동하는데 500에러 페이지는 안나오네요 채택완료

JKWang 1년 전 조회 2,163

ErrorDocument 404 /pages/general/error-404.php
ErrorDocument 500 /pages/general/error-500.php

 

일부러 없는 페이지 링크로 접속하면 지정한 404 페이지는 잘 나옵니다

그런데 일부러 php 에러내면 지정한 500 페이지가 나오는게 아니라

브라우저에서 보여주는 500에러페이지가 나오네요..무슨일인지 모르겠습니다.

 

페이지가 작동하지 않습니다.

현재 example.com에서 요청을 처리할 수 없습니다.

HTTP ERROR 500

 

 

당연히 해당 파일은 url로도 잘 접속해서 확인가능합니다.

경로에 문제가 있다거나 해당 파일이 없다거나 해당 파일에서 오류가 나는건 아닙니다.

 

일부러 에러발생할때 사용한 코드입니다.

변수선언 끝에 ; 를 넣지 않았습니다.

</p>

<p><?php</p>

<p>$val = ""</p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
웅푸
1년 전

웹서버가 기본페이지 찾고있습니다. 올바른 경로로 해주세요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 5개

J
JKWang
1년 전
조금 더 자세하게 설명해주실 수 있으실까요?
기본페이지를 찾고 있어서 올바른 경로로 해야된다는 말씀이
아파치설정에서 어떤걸 설정해줘야 하는 걸까요?

<VirtualHost *:80>
ServerName example.com
.....
ErrorDocument 500 http://www.exampl.com/pages/general/error-500.php
</VirtualHost>

이렇게 해줘도 안되었거든요
웅프
1년 전
흠...www.exampl.com 이도메인은 실제 도메인이 아닌데요;;;

그리고 또한 ErrorDocument 이렇게 설정하는것은 내부적오류 에대해 적용이 않될거에요.
하여 삭제 해버리세요

그리고

php자체에서 오류헨들링처리 해주시는게 낮습니다.
에러를 로그로 기록하거나, 에러 페이지로 리다이렉션할 수 있도록 해줄려면
페이지 상단에 다음과 같이 추가 해주세요
또한
https 면 바꿔주시요

<?php
set_error_handler(function($errno, $errstr, $errfile, $errline) {
header('Location: http://실제 오류페이지 경로/error-500.php', true, 500);
exit;
});
웅프
1년 전
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
상단에 넣고 오류 내용 확인 해보세요
J
JKWang
1년 전
[code]
function customErrorHandler($errno, $errstr, $errfile, $errline) {
if ($errno === E_USER_ERROR) {
http_response_code(500);
header("Location: /error/error-500.php");
exit;
}
}

// 사용자 정의 오류 처리 함수를 등록
set_error_handler("customErrorHandler");
[/code]

이렇게 해결했습니다. 감사합니다.
웅프
1년 전
^^ 고생하셨습니다. ^이제좀 쉬세요 ^^

댓글을 작성하려면 로그인이 필요합니다.

그런데 가용성이 저조한 htaccess 로 분기처리하시는 특별한 이유가 있으신건지 궁금하네요. 굳이, htaccess 를 설정하지 않아도 경로에 해당 페이지거 없을 경우 띄울 수 있는 로직은 금방 개발할텐데요. PHP에 해당 연결 페이지 경로에 파일이 존재하는지 유무를 체크하는 내장함수들이 있습니다. 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

J
JKWang
1년 전
예컨데
example.com/null.php
로 접속한다고 했을때 null.php가 없는데
웹서버에서 404에러를 띄워주기 전에 해당 경로에 파일이 있는지 php로 판단이 가능하다는 말씀이세요?
키득커뮤니케이션즈
1년 전
네 가능합니다. 상대경로 및 절대경로에 해당 파일이 있는지 존재유무를 판독하는 내장함수가 있습니다.
J
JKWang
1년 전
제 짧은 소견으로는
is_file 이나 file_exists 를 사용하면 파일이 경로에 있는지 확인이 가능하겠지만

제가 여쭤보고 싶은건 이미 없는 경로에 접속을 했는데
이걸 php에서 확인이 가능한지 여쭤봅니다.

가능하시다면 혹시 예제코드 제공해주실 수 있으실까요??

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인