0

SQLクエリはほとんどなく、ログインしたユーザーがIDを持っているので問題なく実行されますが、ゲストがそれらのリンクをクリックするとエラーが発生し、完全なSQLクエリが表示されます。これは大きなセキュリティリスクです。エラー報告を無効にしたいので、wm を介して php.ini でエラー報告を無効にしました

必要なときに完全なエラーを無効にする方法を探しています.mysqlクエリの先頭に@を追加することで実行できることはわかっていますが、すべてのクエリに@を追加したくありませんwhmを無効にするだけの簡単な解決策を探していますいいねを有効にします。

ここに私のエラーがあります

 QL query error!
Error infomation:
[SQL]
 select * from `blacks` where bid= and uid=21329 

 [Error]
You have an error in your SQL syntax; check the manual that corresponds to your        MySQL      server version for the right syntax to use near 'and uid=21329' at line 1
4

3 に答える 3

3

PHPスクリプトの出力にエラーが表示されないようにするには、display_errorsをphp.inioffまたはphp.ini0に設定します。phpinfoを見ると、ロードされているphp.iniファイルを見つけることができます。

新しいPHPスクリプトを作成し、そのスクリプトに次の行を入力して実行すると、現在ロードされているPHPのすべての構成ディレクティブの値が表示されます。

<?php phpinfo(); ?>

ただし、実際にはerror_reportingを完全に無効にする必要はありません。本番環境でエラーをログに記録し、display_errorsをオフにしておくことが重要ですエラーをログに記録することは、エラーがいつ発生したかを特定するのに役立つため、重要です。そうしないと、コードに問題があるかどうかがわからなくなり、修正できなくなります。

エラー制御演算子 @を使用することは、意味的にはerror_reportingを無効にすることと同等であるため、強くお勧めしません。つまり、致命的なエラーが原因でスクリプトが停止したかどうかはわかりません。


php.iniに加えられた変更を有効にするには、PHPを再起動する必要があることに注意することも重要です。たとえば、 apachehttpdで*mod_php *を使用している場合、それはWebサーバーを完全に再起動することを意味します。これには、完全に停止してからhttpdのバックアップを再開する必要がある場合があります(restartコマンドを使用する一部のセットアップでは実行できない場合があります)。CLIまたはCGIを使用している場合は、リクエストごとにプロセスが自動的に再開されます。一部のfcgi/mod_fcgidセットアップ、およびFPMセットアップでは、すべてのfastcgiワーカーが完全に停止され、親プロセスによって再生成されることを確認する必要があります。

于 2012-12-08T10:49:07.133 に答える
0

error_reporting(0); を使用してエラー報告を無効にすることができます。

于 2012-12-08T10:50:09.810 に答える
0

php.ini で display_errors ディレクティブを off に設定する必要があります。エラー報告を完全にオフにするのではなく、エラーをログに書き込む必要があります。

于 2012-12-08T10:52:48.853 に答える