[PHP-users 9642] Re: ファイルの存在確認をしたい

Naofumi Kondoh php-users@php.gr.jp
Fri, 30 Aug 2002 11:54:47 +0900


ソフト工房の近藤です。

@ Edwin wrote:
> 
> Yasuo Ohgakiさんwrote:
> 
>> # 蛇足ですが、もしWriting Solid PHP Codeという本
>> # あればE_ALLでコーディングしましょう、と書いてあると
>> # 思います。E_ALLでエラーが発生しないように開発する
>> # 事は安全なWebアプリケーションを作る上で非常に重要です。

> 確かに、努力は必要です。が、今、現在、(今まで)人間が作った完璧なものっ 
> てあ
> りますか?「エラーが発生しないように」開発しても、いつか、どこかで、エ 
> ラーが
> 出てくると思います。また、(1)「バグ」というものがあるのではないでしょう
> か?(2)自分がどんな努力をしても、サーバーや回線や他のソフト(アプリケー
> ション)の問題があったら、エラーが発生します。(例:自分で作ったPHPアプリ
> ケーションが他のFTPサーバーやDBサーバーやWeb Applicationサーバーに接続し 
> てい
> る間に急に問題が発生したら、エラーが発生するのではないでしょうか?)

一般論としてはいいですが、それをもって、@ を使用したり、
E_ALL を設定しない理由にするのは、論理のすりかえです。

ソフトにバグのない証明はできないが、バグのないソフトを
作るための努力は必要です。

その努力のためには、@ の使用は、代替え手段のあるやむお
えない場合に限定し、error_reporting は、E_ALL に設定す
べきです。

# 私だってバグをだしますが、出さないように努力をするし、
# バグの発見がしやすいような設定をします。

#  尤も、過去の資産については、変更費用や、作業の優先順
# その他の理由で、なかなかバグやセキュリティー対策がすす
# まないので、大きなことは言えませんが。



> PHPの開発者たちはなぜ「@」エラー制御オペレータを使えるようにPHPを開発し 
> たの
> ですか?
....略....

参考に、@ が必要な場合の1つの例をあげます。

pg_query などで SQL 文を実行した場合、DB の生の警告・
エラー表示が直接画面に出ます。これは、ユーザーにとって
わかりにくだけでなく、ユーザーには見せないほうがよい情報
まで表示され、クラッカーの攻撃材料にされる可能性もあります。

こういう場合は、@ で、DBの生の表示を出さずに、ロジックで
判定したわかりやすい警告・エラー表示をするようにします。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 (株)ソフト工房   近藤直文        Email:  nkon@shonan.ne.jp
http://www.SOFTKOUBOU.co.jp/      http://www.shonan.ne.jp/~nkon/
2002-09-26(木)19:00-21:30 第6回 JPUG 業務アプリ分科会 勉強会
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/