PHP mysqli 에러 출력 - PHP mysqli eleo chullyeog

PHP관련 시스템을 유지보수하고 있는데 500에러를 맞딱뜨렸다.

PHP mysqli 에러 출력 - PHP mysqli eleo chullyeog

처음에는 500에러 외에 다른 정보가 없어 echo로 쿼리문을 찍어 DB에 직접 쿼리문을 실행해보았다.

$query = "SELECT ~~~~~~~~ ";
echo $query.":query<bR>";

쿼리를 직접 실행해본 결과 쿼리에는 문제가 없었다. 또한 해당 페이지가 참조하는 쿼리문이 많았기 때문에 하나하나 찾기 힘들었고 쿼리문에 문법오류가 있는것으로 보이지 않았다.

여러 방법을 찾아보니 php.ini 파일에서 설정을 변경하는 방법이나 해당 페이지에서 직접 에러 메세지를출력하게 세팅하는 방법이 있었다. 

1. php.ini 파일에서 설정을 변경하는 방법(에러메세지 전체 페이지에서 출력)

phpinfo.php 에서 php.ini의 위치를 찾고 vim을 켜서 수정을 하도록 하자.

PHP mysqli 에러 출력 - PHP mysqli eleo chullyeog

수정하고 나서 아파치를 재기동해주면 된다!

2. 특정 페이지에서 에러 메세지 출력하는 방법

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

에러 메세리를 출력할 페이지의 php 파일에 다음 소스를 상단에 넣자.

이상이다.


Server/.PHP

2013. 11. 20. 00:29

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
$sql = 'UPDATE tutorials_tbl
        SET tutorial_title="Learning JAVA"
        WHERE tutorial_id=3';

mysql_select_db('TUTORIALS');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Could not update data: ' . mysql_error());
}
echo "Updated data successfully\n";
mysql_close($conn);
?>


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

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

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

목차

  • 1 예제 문서
  • 2 에러 출력하는 방법
    • 2.1 문서에서 설정하는 방법
    • 2.2 서버에서 설정하는 방법
  • 3 에러 출력하지 않는 방법
    • 3.1 문서에서 설정하는 방법
    • 3.2 서버에서 설정하는 방법

예제 문서

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

<!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 mysqli 에러 출력 - PHP mysqli eleo chullyeog

에러 출력하는 방법

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

문서에서 설정하는 방법

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

<?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