2010-11-23 5 views
7

pg_connect()가 테이블 형식으로 오류를 표시하고 있습니다. 대신 오류 메시지에 표 형식으로 오류 메시지가 표시되어야한다는 경고 메시지가 필요합니다.pg_connect() 함수 오류를 catch하는 방법은 무엇입니까?

오류 메시지가
경고 : pg_connect() [function.pg이-연결] : FATAL : PostgreSQL 서버에 연결할 수 없습니다 암호 인증/public_html을/여기서 queueManager/홈/시험에서 사용자 "테스트"실패/모듈/Database.php on line 41

오류를 테이블 형식으로 표시하는 경우.
pg_connect() throwed exception을 실행 한 후.
하지만 작동하지 않습니다.

코드

function connect() 
{ 
    $HOST = $GLOBALS[Database_Conn][Db_Host];  # Host name 
    $USER = $GLOBALS[Database_Conn][Db_User];  # database user name 
    $DBNAME = $GLOBALS[Database_Conn][Db_Name]; # name of the database 
    $PASSWORD = $GLOBALS[Database_Conn][Db_Pass]; # password the database user. 

    try 
    { 
    $conn = pg_connect("host=$HOST dbname=$DBNAME user=$USER ". 
         "password=$PASSWORD sslmode=disable"); 
    if(!$conn) 
    { 
     throw new Exception("Database Connection Error"); 
    } 
    return $conn; 
    } 
    catch (Exception $e) 
    { 
    print <<<_HTML_ 
    <script> alert('Caught exception'); 
    </script> _HTML_; 
    die(); 
    } 
} 

예를 들어, 함수 호출 앞에 @를 추가, 나에게 PHP에 의해 생성 된 오류 텍스트를 숨기려면 솔루션

+0

을 아닌가요 참조하십시오? (정직한 질문, PHP는 이러한 종류의 예외 발생을 지원합니까?) – DrColossos

+0

예, PHP 5 이상은 예외를 지원합니다. 그의 코드는 예외적 인 것들을 테스트하고 있기 때문에 그런 것 같다. 문제는 * pg_connect가 반환되기 전에 "Warning : pg_connect()"메시지가 생성된다는 것입니다. – intgr

+0

@DrColossos :: 아마 그는 연결 시도에 사용 된 사용자 이름을 밝히는 기본 예외를 숨기려고합니다.이 경우 메시지는 다음과 같습니다. '사용자의 암호 인증에 실패했습니다.' '가능하면 시험' ' –

답변

4

을주십시오 :

$conn = @pg_connect("host=$HOST dbname=$DBNAME user=$USER ". 
        "password=$PASSWORD sslmode=disable"); 

details here

+0

+100'입니다. 고맙습니다! – colllin

+2

'pg_connect()'함수가 존재하지 않는다면, 스크립트는 여전히 죽을 것이지만 오류는 볼 수 없다는 것을 명심하십시오. – AndreKR

15

pg_connect 예외를 발생시키지 않습니다. 당신은 아래와 같이 예외로 번역해야합니다.

function exception_error_handler($errno, $errstr, $errfile, $errline) { 
    throw new ErrorException($errstr, $errno, 0, $errfile, $errline); 
} 
set_error_handler("exception_error_handler"); 

try { 
    [email protected]_connect("host=dbhost user=dbuser dbname=db password=dbpass"); 
} Catch (Exception $e) { 
    Echo $e->getMessage(); 
} 

이 종류의 예외를 잡는 동안 ... 예외를 던질 것을 유선이 자세히

http://php.net/manual/en/language.exceptions.php

관련 문제