pg_connect()はテーブル形式でエラーを表示しています。代わりに、エラーメッセージを表形式で表示するにはエラーメッセージ警告が必要です。pg_connect()関数のエラーをキャッチする方法は?
エラーメッセージ
警告:のpg_connect()[function.pg-接続]:PostgreSQLサーバに接続できません:FATAL:パスワード認証がに/家庭ユーザー "テスト" に失敗しました/テスト/ public_htmlの/ QueueManager/Modules/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によって生成されたエラーテキストを非表示にするソリューション
この詳細を参照してください...それは一種の例外をキャッチしているときに例外をスローすることを有線ではないですか? (正直な質問ですが、PHPはこの種の例外をスローすることをサポートしています) – DrColossos
はい、PHP 5以降では例外がサポートされています。彼は例外的なものをテストしているので、彼のコードはそうだと思う。問題は、* pg_connectが返される前に*警告:pg_connect()メッセージが生成されていることです。 – intgr
@DrColossos ::おそらく、彼は接続試行で使用されたユーザ名を明らかにするデフォルトの例外を隠そうとしていると思われます。この場合、「パスワード認証に失敗しました。ユーザ "test" ' –