fopenは使いどころを誤ると無限ループに陥る件

次のようなコードは危険な場合がある。


$fp = fopen("ファイル","r");

while(!feof($fp))

{


}

fclose($fp);


これは、ファイルがもし無い場合、!feof($fp)がずっと真になってしまい、無限ループするからである。


解決法は


$fp = @fopen("ファイル","r");

if( $file )

{

while(!feof($fp))

{


}

fclose($fp);

}


このようにエラー制御子@を使う事で、fopenの時点でFALSEをしっかり返され、

次のifでwhileに入らずに済む。





コメントをどうぞ