11

ローカル サイトの DB に接続しようとする php スクリプトがあります。ローカル DB が利用できない場合は、リモート サーバー上の DB への接続を試行する必要があります。

$dblink = mysql_connect(DBHOST_LOCAL, DBUSER, DBPASS) or $RC = 1;
if($RC) {
    $dblink = mysql_connect(DBHOST_REMOTE, DBUSER, DBPASS) or die('Could not connect'.mysql_error());
}

問題は、最初に接続に失敗した場合にページに警告メッセージを表示したくないことです。mysql_connect() 関数のみの警告メッセージを無効にする方法はありますか?

4

5 に答える 5

13

はい、そのように @ 記号を追加して警告/エラーメッセージを抑制し、エラーを一度自分で実行します:

$dblink = @mysql_connect(DBHOST_LOCAL, DBUSER, DBPASS);

if (!$dblink) 
{
    $dblink = @mysql_connect(DBHOST_REMOTE, DBUSER, DBPASS);                  
}

if (!$dblink)
{
    $message = sprintf(
        "Could not connect to local or remote database: %s",
        mysql_error()
    );
    trigger_error($message);
    return;
}

その場合、すべてのエラー報告を自分で処理する必要があることに注意してください。このようなコードは、間違いを犯した場合にデバッグするのが困難です。

于 2013-06-04T08:20:12.597 に答える
4

エラー報告error_reporting(0);を設定して、特定のページのエラーと警告をオフにすることができます

必要に応じて設定するだけです

# config.ini 
# PHP error reporting. supported values are given below. 
# 0 - Turn off all error reporting 
# 1 - Running errors 
# 2 - Running errors + notices 
# 3 - All errors except notices and warnings 
# 4 - All errors except notices 
# 5 - All errors 

ドク

このようにページの先頭に設定するだけです

<?php 

      error_reporting(E_ERROR | E_WARNING | E_PARSE);

?>

もっとお手伝いできることがあれば教えてください。

于 2013-06-04T08:29:18.217 に答える
3

適切な解決策は、ユーザーへの PHP エラー、警告、および通知の表示を無効にすることです。display_errorsこれは、php.ini 構成ファイルの設定を介して行うことができます。

display_errors = Off

次の方法で実行時に設定することもできますini_set()

ini_set('display_errors', '0');

マニュアルから:

display_errors
これは、エラーを出力の一部として画面に表示するか、ユーザーに表示しないかを決定します。

これを行うと、機密性の高い PHP エラー メッセージがユーザーに表示されなくなりますが、ログ ファイルに出力される可能性があります。

抑制メソッドを使用すると、@必要なことが行われますが、他の PHP エラー/警告がユーザーに出力される可能性があります。これは、これらのエラーに公開してはならない機密情報が含まれている可能性があるため、セキュリティ上の問題です。

于 2013-06-04T08:49:03.370 に答える
0

次の方法を使用できませんか。

if (!$connection = mysql_connect(DBHOST_LOCAL, DBUSER, DBPASS)) {
    die('And here we connect to the other server');
} 

接続が失敗すると、ブール値が返され、if ステートメントが true になります。

于 2013-06-04T08:25:04.803 に答える