PHP / 에러 출력하는 방법, 에러 출력하지 않는 방법

PHP 코딩을 하고 웹 브라우저에서 실행을 시킵니다. 그런데 원하는 결과가 나오지 않거나 '페이지를 표시할 수 없습니다' 같은 메시지가 나오는 경우가 있습니다.

반대로 결과를 도출하는 데는 문제가 없으나 에러 메시지가 나오는 경우가 있습니다.

보통 개발 과정에서는 어떤 에러든 표시하는 게 좋고, 서비스 중이라면 왠만한 에러는 보이지 않는 게 좋습니다. 어떻게 에러 표시 여부를 제어하는지 알아보겠습니다.

예제 문서

아래는 에러가 있는 문서입니다.

<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>PHP</title>
    <style>
      body { font-family: Consolas, sans-serif; }
      input, button { font-family: inherit; font-size: inherit; }
    </style>
  </head>
  <body>
    <p><?php echo $asd; ?></p>
  </body>
</html>

에러가 출력되도록 설정되어 있다면 아래와 같은 메시지가 나옵니다.

에러 출력하는 방법

에러가 나오지 않는다면 아래의 방법으로 에러를 출력할 수 있습니다.

문서에서 설정하는 방법

문서에 다음의 코드를 추가합니다.

<?php
  error_reporting( E_ALL );
  ini_set( "display_errors", 1 );
?>

전체 코드는 다음과 같습니다.

<?php
  error_reporting( E_ALL );
  ini_set( "display_errors", 1 );
?>
<!doctype html>
<html lang="ko">
  <head>
    <meta charset="utf-8">
    <title>PHP</title>
    <style>
      body { font-family: Consolas, sans-serif; }
      input, button { font-family: inherit; font-size: inherit; }
    </style>
  </head>
  <body>
    <p><?php echo $asd; ?></p>
  </body>
</html>

서버에서 설정하는 방법

php.ini에 있는 다음과 같은 코드를

display_errors = Off

다음과 같이 변경합니다.

display_errors = On

그리고 웹서버를 다시 시작하거나 다시 로드합니다.

에러 출력하지 않는 방법

에러가 나온다면 아래의 방법으로 에러를 출력하지 않을 수 있습니다.

문서에서 설정하는 방법

문서에 다음의 코드를 추가합니다.

<?php
  ini_set( 'display_errors', '0' );
?>

서버에서 설정하는 방법

php.ini에 있는 다음과 같은 코드를

display_errors = On

다음과 같이 변경합니다.

display_errors = Off
같은 카테고리의 다른 글
PHP / 함수 / strip_tags() / 문자열에서 HTML 태그와 PHP 태그 제거하는 함수

PHP / 함수 / strip_tags() / 문자열에서 HTML 태그와 PHP 태그 제거하는 함수

개요 strip_tags는 문자열에서 HTML 태그와 PHP 태그 제거하는 함수입니다. PHP 4 이상에서 사용할 수 있습니다. 문법 strip_tags ( string $str ) allowable_tags로 제거하지 않을 태그를 정할 수 있습니다. 예를 들어 strip_tags( '<p>Lorem <strong>Ipsum</strong></p>' ) 는 모든 태그를 제거합니다. strip_tags( '<p>Lorem <strong>Ipsum</strong></p>', '<strong>' ) 은 strong 태그를 제외한 나머지 태그를 제거합니다. 예제 <!doctype html> <html lang="ko"> <head> ...

PHP / addslashes(), stripslashes()

PHP / addslashes(), stripslashes()

addslashes() 작은 따옴표, 큰 따옴표, 백슬래시 앞에 백슬래시를 추가한다. 즉, PHP 'PHP' "PHP"를 PHP \'PHP\' \"PHP\"로 변경한다. <!doctype html> <html lang="ko"> <head> <meta charset="utf-8"> <title>PHP</title> <style> * { font-family: "Consolas", monospace; ...

PHP / 회원 관리 / 세션(SESSION) 추가하기, 로그아웃 페이지

PHP / 회원 관리 / 세션(SESSION) 추가하기, 로그아웃 페이지

login.php 로그인 한 상태인지 로그인 하지 않은 상태인지 파악하기 위해 login-ok.php로 넘어가기 전에 세션을 시작합니다. 그리고 username을 $_SESSION에 담습니다. <?php $username = $_POST; $password = $_POST; if ( !is_null( $username ) ) { $jb_conn = mysqli_connect( 'localhost', 'codingfactory', '1234qwer', 'codingfactory.net_example' ...

PHP / 함수 / var_dump() / 변수의 정보를 출력하는 함수

PHP / 함수 / var_dump() / 변수의 정보를 출력하는 함수

개요 var_dump는 변수의 정보를 출력하는 함수입니다. PHP 4 이상에서 사용할 수 있습니다. 문법 var_dump( $var1, $var2, ... ); 결과의 해석은 다음과 같습니다. int(1) : 정수이고, 값은 1입니다. float(1.1) : 실수이고, 값은 1.1입니다. string(5) "hello" : 5개의 문자로 이루어진 문자열이고, 값은 hello입니다. array(2) { => float(1.1) } : 2개의 값을 가진 배열이고, 첫번째 값은 정수 1, 두번째 값은 ...

PHP / 함수 / password_hash() / 비밀번호 암호화하는 함수

PHP / 함수 / password_hash() / 비밀번호 암호화하는 함수

개요 password_hash()는 비밀번호를 암호화해주는 함수입니다. 입력한 값이 암호화된 비밀번호와 맞는지 확인하는 것은 password_verify() 함수로 합니다. 문법 password_hash ( string $password , int $algo ) $password 암호화할 문자열입니다. $algo 암호화 알고리즘을 정합니다. PASSWORD_DEFAULT : bcrypt 알고리즘을 사용합니다. PASSWORD_BCRYPT : CRYPT_BLOWFISH 알고리즘을 사용합니다. PASSWORD_ARGON2I : Argon2i hashing 알고리즘을 사용합니다. PHP를 Argon2를 사용할 수 있도록 설치한 경우에 사용 가능합니다. PASSWORD_ARGON2ID ...

PHP / 연산자 / 할당 연산자

PHP / 연산자 / 할당 연산자

PHP의 할당 연산자는 =이다. 등호 오른쪽을 등호 왼쪽에 저장한다.('같다'를 표현할 때는 ==를 사용한다.) 변수 a에 10을 할당한다. $a = 10; 여러 번 할당하면 마지막에 할당된 것이 값이 된다. 즉 변수 a의 값은 20이다. $a = 10; $a = 20; 기존 값을 사용할 수 있다. 변수 a의 값은 20이다. $a = 10; $a = $a + 10;

PHP / Session / 로그인, 로그아웃, 로그인 상태에서만 보이는 콘텐츠 만들기

PHP / Session / 로그인, 로그아웃, 로그인 상태에서만 보이는 콘텐츠 만들기

PHP의 세션을 이용하여 로그인, 로그아웃을 만들 수 있습니다. 그리고 로그인한 사용자만 볼 수 있는 콘텐츠를 만들 수도 있습니다. 다음은 이를 구현한 아주 간단한 예제입니다. inc_head.php 모든 페이지에 들어갈 코드입니다. include 함수로 각 페이지에서 불러올 것입니다. 세션의 username 값이 있다면, 즉 로그인 상태라면 $jb_login에 TRUE를 할당합니다. <?php session_start(); if( isset( $_SESSION ...

PHP / 함수 / explode() / 문자열을 분할하여 배열로 저장하는 함수

PHP / 함수 / explode() / 문자열을 분할하여 배열로 저장하는 함수

개요 explode()는 문자열을 분할하여 배열로 저장하는 함수입니다. PHP 4 이상에서 사용할 수 있습니다. 문법 explode ( delimiter, string ) delimiter : 문자열을 분할할 기준을 정합니다. string : 분할할 문자열입니다. limit : 옵션으로, 분할할 개수를 정합니다. 정수를 입력합니다. $jbstring = 'one two three four'; $jbexplode = explode( ' ', $jbstring ); 문자열 jbsrting을 공백을 기준으로 구분하여 배열 jbexplode에 ...

PHP / Ubuntu / Apache / HTML 확장자에도 PHP 코드 인식되도록 설정하는 방법

PHP / Ubuntu / Apache / HTML 확장자에도 PHP 코드 인식되도록 설정하는 방법

Ubuntu에 Apache로 웹서버를 만들고 PHP를 사용할 수 있게 만든 경우, 기본적으로 확장자가 php인 경우에만 PHP 코드를 인식합니다. 만약 확장자가 html일 때로 PHP 코드가 인식되도록 하고 싶다면, Apache 설정을 바꿔줘야 합니다. /etc/apache2/mods-enabled/mime.conf 파일을 엽니다. 다음 코드를 추가합니다. AddType application/x-httpd-php .html 확장자가 htm인 경우에도 PHP를 인식하도록 하고 싶다면 다음처럼 합니다. AddType application/x-httpd-php .html .htm 웹서버를 다시 로드합니다. service apache2 ...

PHP / SQL Server / Ubuntu 18.04에서 연결하는 방법

PHP / SQL Server / Ubuntu 18.04에서 연결하는 방법

PHP에서 SQL Server에 연결하는 방법입니다. 서버 OS는 Ubuntu 18.04이고 Apache, PHP는 설치되어 있는 상태에서 시작합니다. 아래의 내용은 꼭 필요한 것만 모은 요약이며, 자세한 내용은 Microsoft 홈페이지에서 보실 수 있습니다. 소프트웨어 설치 다음의 명령을 차례대로 실행하여 필요한 소프트웨어를 설치합니다. curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list apt-get update ACCEPT_EULA=Y apt-get install msodbcsql17 apt-get install unixodbc-dev apt install ...