第5章 組み込み関数 / 第1回 模擬試験

PHPのファイルシステム関数に関する次の記述のうち、正しいものはどれか。

`fopen()`関数は、ファイルを開く際にモードを指定できない。
`fwrite()`関数は、ファイルにデータを書き込む。 正解
`fclose()`関数は、開いているファイルを自動的に閉じるため、明示的に呼び出す必要はない。
`file_get_contents()`関数は、ファイルの書き込みにのみ使用できる。
解説
`fwrite()`(`fputs()`のエイリアス)は、`fopen()`で開いたリソースに対して文字列を書き込み、書き込んだバイト数を返します。 他の選択肢が誤りである理由は次の通りです。 ・`fopen()`の第2引数(モード)は必須で、`'r'`(読み込み)、`'w'`(書き込み・既存内容を破棄)、`'a'`(追記)などを指定します。省略はできません。 ・`fclose()`を呼ばなくてもスクリプト終了時などにPHPが内部的に閉じますが、そのタイミングは保証されません。大量のファイルを開閉する処理で明示的に`fclose()`しないと、ファイルディスクリプタの枯渇やロック解放漏れにつながるため、「呼び出す必要がない」は実務上誤りとされます。 ・`file_get_contents()`はファイルやURLの内容を文字列として読み込む関数です。書き込みには`file_put_contents()`を使います。 例: ``` $fp = fopen('log.txt', 'a'); fwrite($fp, "処理完了 "); fclose($fp); ``` (参照: 独習PHP 第4版 第5章 組み込み関数 5.5節 ファイルシステム関数 p.237〜251)