1.resource fopen(string $filename, string $mode [,bool $use_include_path [, resource $zcontext]])
関数:
fopen() filename で指定された名前リソースを stream にバインドします。ファイル名が「scheme://...」の形式である場合、それは URL として扱われ、PHP はスキームを処理するためのプロトコル ハンドラー (ラッパー プロトコルとも呼ばれます) を検索します。プロトコルがラッパー プロトコルとして登録されていない場合、PHP はスクリプト内の潜在的な問題をチェックし、通常のファイル名として filename の実行を続行するのに役立つメッセージを発行します。
ファイル名がローカル ファイルを指定していると PHP が判断した場合、そのファイルのストリームを開こうとします。ファイルは PHP からアクセスできる必要があるため、ファイル アクセス許可でこのアクセスが許可されていることを確認する必要があります。セーフ モードまたは open_basedir がアクティブ化されている場合は、さらに制限が適用されます。
ファイル名が登録されたプロトコルを指定しており、そのプロトコルがネットワーク URL として登録されていると PHP が判断した場合、PHP は、allow_url_fopen がアクティブ化されていることを確認します。閉じている場合、PHP は警告を発行し、fopen の呼び出しは失敗します。
filename: 開くファイルまたは URL を指定します。
mode: このファイル/ストリームに必要なアクセスのタイプを指定します。
include_path: オプション。include_path 内のファイルも取得する必要がある場合は、このパラメータを 1 または TRUE に設定できます。
context: オプションで、ファイルハンドルの環境を指定します。Context は、ストリームの動作を変更できるオプションのセットです。
modeパラメータの可能な値
mode 説明
"r" ファイルポインタがファイルヘッダを指すように、読み取り専用モードで開きます。
「r+」 読み取りおよび書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントします。
"w" 書き込みモードで開き、ファイル ポインタをファイル ヘッダーにポイントし、ファイル サイズをゼロに切り捨てます。ファイルが存在しない場合は、作成してみてください。
「w+」 読み取りおよび書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントし、ファイル サイズをゼロにカットします。ファイルが存在しない場合は、作成してみてください。
「a」 書き込みモードで開き、ファイルポインタをファイルの末尾に指します。ファイルが存在しない場合は、作成してみてください。
「a+」 読み取り/書き込みモードで開き、ファイル ポインタをファイルの末尾に指します。ファイルが存在しない場合は、作成してみてください。
「x」
ファイルポインターをファイルヘッダーにポイントして、書き込み用に作成して開きます。ファイルが既に存在する場合、 fopen() 呼び出しは失敗し、FALSE を返し、E_WARNING レベルのエラー メッセージを生成します。ファイルが存在しない場合は、作成してみてください。
これは、基礎となる open(2) システム コールに O_EXCL|O_CREAT フラグを指定するのと同じです。
このオプションは PHP 4.3.2 以降のバージョンでサポートされており、ローカル ファイルにのみ使用できます。
"x+"
ファイル ポインタをファイル ヘッダーに指定して、読み取り/書き込みモードで作成して開きます。ファイルが既に存在する場合、 fopen() 呼び出しは失敗し、FALSE を返し、E_WARNING レベルのエラー メッセージを生成します。ファイルが存在しない場合は、作成してみてください。
これは、基礎となる open(2) システム コールに O_EXCL|O_CREAT フラグを指定するのと同じです。
このオプションは PHP 4.3.2 以降のバージョンでサポートされており、ローカル ファイルにのみ使用できます。
注:
オペレーティング システム ファミリが異なると、行末の習慣も異なります。テキスト ファイルに書き込み、新しい行を挿入する場合は、オペレーティング システムに準拠した行末を使用する必要があります。 Unix ベースのシステムでは行終了文字として n が使用され、Windows ベースのシステムでは行終了文字として rn が使用され、Macintosh ベースのシステムでは行終了文字として r が使用されます。
間違った行末を使用してファイルを作成すると、他のアプリケーションがそのファイルを開いたときに異常な動作をする可能性があります。
Windows には、n を rn に透過的に変換するためのテキスト変換タグ (「t」) が用意されています。あるいは、「b」を使用してバイナリ モードを強制し、データが変換されないようにすることもできます。これらのフラグを使用するには、モード引数の最後の文字として「b」または「t」を使用します。
デフォルトの変換モードは使用する SAPI と PHP のバージョンによって異なるため、移植性を確保するために、常に適切なタグを指定することをお勧めします。プレーン テキスト ファイルを操作し、スクリプト内で行終端文字として n を使用しているが、そのファイルをメモ帳などの他のアプリケーションでも読み取れるようにしたい場合は、モードで 't' を使用します。それ以外の場合はすべて「b」を使用します。
バイナリ ファイルを操作するときに「b」フラグを指定しない場合、破損したイメージ ファイルや rn 文字に関する奇妙な問題など、いくつかの奇妙な問題が発生する可能性があります。