htaccess에서 404 페이지는 작동하는데 500에러 페이지는 안나오네요 채택완료
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개
답변에 대한 댓글 5개
그리고 또한 ErrorDocument 이렇게 설정하는것은 내부적오류 에대해 적용이 않될거에요.
하여 삭제 해버리세요
그리고
php자체에서 오류헨들링처리 해주시는게 낮습니다.
에러를 로그로 기록하거나, 에러 페이지로 리다이렉션할 수 있도록 해줄려면
페이지 상단에 다음과 같이 추가 해주세요
또한
https 면 바꿔주시요
<?php
set_error_handler(function($errno, $errstr, $errfile, $errline) {
header('Location: http://실제 오류페이지 경로/error-500.php', true, 500);
exit;
});
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
상단에 넣고 오류 내용 확인 해보세요
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]
이렇게 해결했습니다. 감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
그런데 가용성이 저조한 htaccess 로 분기처리하시는 특별한 이유가 있으신건지 궁금하네요. 굳이, htaccess 를 설정하지 않아도 경로에 해당 페이지거 없을 경우 띄울 수 있는 로직은 금방 개발할텐데요. PHP에 해당 연결 페이지 경로에 파일이 존재하는지 유무를 체크하는 내장함수들이 있습니다.
답변에 대한 댓글 3개
example.com/null.php
로 접속한다고 했을때 null.php가 없는데
웹서버에서 404에러를 띄워주기 전에 해당 경로에 파일이 있는지 php로 판단이 가능하다는 말씀이세요?
is_file 이나 file_exists 를 사용하면 파일이 경로에 있는지 확인이 가능하겠지만
제가 여쭤보고 싶은건 이미 없는 경로에 접속을 했는데
이걸 php에서 확인이 가능한지 여쭤봅니다.
가능하시다면 혹시 예제코드 제공해주실 수 있으실까요??
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
기본페이지를 찾고 있어서 올바른 경로로 해야된다는 말씀이
아파치설정에서 어떤걸 설정해줘야 하는 걸까요?
<VirtualHost *:80>
ServerName example.com
.....
ErrorDocument 500 http://www.exampl.com/pages/general/error-500.php
</VirtualHost>
이렇게 해줘도 안되었거든요