как отловить ошибку функции pg_connect ()? - PullRequest
8 голосов
/ 23 ноября 2010

pg_connect () показывает ошибку в формате таблицы. Вместо отображения сообщения об ошибке, так как формат таблицы требует предупреждения об ошибке.

Сообщение об ошибке
Предупреждение: pg_connect () [function.pg-connect]: не удается подключиться к серверу PostgreSQL: FATAL: сбой аутентификации по паролю для «теста» пользователя в /home/test/public_html/QueueManager/Modules/Database.php в строке 41

После, если отображается ошибка в виде таблицы.
После выполнения pg_connect () выдается исключение.
Но это не работает.

код

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();
  }
}

Пожалуйста, дайте мне решение

Ответы [ 2 ]

18 голосов
/ 04 июля 2013

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 {
    $conn=@pg_connect("host=dbhost user=dbuser dbname=db password=dbpass");
} Catch (Exception $e) {
    Echo $e->getMessage();
}

Пожалуйста, обратитесь сюда более подробно

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

4 голосов
/ 23 ноября 2010

Чтобы скрыть текст ошибки, сгенерированный PHP, добавьте @ перед вызовом функции, например:

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

Подробнее Подробнее здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...