PHP fopen()関数
定義と使用法
fopen()関数は、ファイルまたはURLを開きます.
オンに失敗した場合、この関数はFALSEを返します.
構文
パラメータ
説明
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以降のバージョンではサポートされており、ローカルファイルでのみ使用できます.
説明
fopen()はfilenameで指定した名前リソースをストリームにバインドします.filenameが「scheme://...「のフォーマットは、URLとして扱われ、PHPはプロトコルプロセッサ(パッケージプロトコルとも呼ばれる)を検索してこのモードを処理する.このプロトコルがカプセル化プロトコルに登録されていない場合、PHPはスクリプト内の潜在的な問題を確認し、filenameを通常のファイル名として実行し続けるメッセージを発行します.
PHPがfilenameがローカルファイルを指定していると判断した場合、そのファイルにストリームを開こうとします.このファイルはPHPでアクセス可能である必要がありますので、ファイルアクセス権限がアクセスを許可していることを確認する必要があります.セキュリティモードまたはopen_がアクティブになっている場合basedirでは、さらなる制限が適用されます.
PHPがfilenameが登録済みプロトコルを指定していると判断し、そのプロトコルがネットワークURLとして登録されている場合、PHPはallow_をチェックして確認します.url_fopenがアクティブになりました.オフの場合、PHPは警告を発行し、fopenの呼び出しは失敗します.
contextのサポートはPHP 5.0である.0が追加されました.
ヒントとコメント
注記:オペレーティングシステムのファミリーによって、行の終了習慣が異なります.テキストファイルに書き込み、新しい行を挿入する場合は、オペレーティングシステムに適合する行終了記号を使用する必要があります.Unixベースのシステムは行終了文字、Windowsベースのシステムは行終了文字、Macintoshベースのシステムは行終了文字としてrを使用します.ファイルに書き込むときにエラーの行終了記号が使用されている場合、他のアプリケーションがこれらのファイルを開くときに変な表現をする可能性があります.
Windowsの下には、透過的にrに変換できるテキスト変換フラグ(「t」)が用意されています.これに対応して、「b」を使用してバイナリモードを強制的に使用することもでき、データを変換しません.これらのタグを使用するには、modeパラメータの最後の文字として「b」または「t」を使用します.
デフォルトの変換モードはSAPIと使用されているPHPバージョンに依存するため、移植奨励を容易にするために常に適切なタグを指定します.純粋なテキストファイルを操作し、スクリプトで行の終端として使用した場合、これらのファイルがNotepadなどの他のアプリケーションで読み込まれることを期待する場合は、modeで「t」を使用します.他のすべての場合に「b」を使用します.
バイナリファイルを操作するときに「b」タグを指定しないと、壊れたピクチャファイルやr文字に関する奇妙な問題など、奇妙な問題に遭遇する可能性があります.
注記:移植性を考慮するには、fopen()でファイルを開くときに常に「b」タグを使用することを強くお勧めします.
注記:もう一度、移植性を考慮すると、「t」モードに依存するコードを正しく行の終了子を使用して「b」モードに変更することを強くお勧めします.
例
fopen()関数は、ファイルまたはURLを開きます.
オンに失敗した場合、この関数はFALSEを返します.
構文
fopen(filename,mode,include_path,context)
パラメータ
説明
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以降のバージョンではサポートされており、ローカルファイルでのみ使用できます.
説明
fopen()はfilenameで指定した名前リソースをストリームにバインドします.filenameが「scheme://...「のフォーマットは、URLとして扱われ、PHPはプロトコルプロセッサ(パッケージプロトコルとも呼ばれる)を検索してこのモードを処理する.このプロトコルがカプセル化プロトコルに登録されていない場合、PHPはスクリプト内の潜在的な問題を確認し、filenameを通常のファイル名として実行し続けるメッセージを発行します.
PHPがfilenameがローカルファイルを指定していると判断した場合、そのファイルにストリームを開こうとします.このファイルはPHPでアクセス可能である必要がありますので、ファイルアクセス権限がアクセスを許可していることを確認する必要があります.セキュリティモードまたはopen_がアクティブになっている場合basedirでは、さらなる制限が適用されます.
PHPがfilenameが登録済みプロトコルを指定していると判断し、そのプロトコルがネットワークURLとして登録されている場合、PHPはallow_をチェックして確認します.url_fopenがアクティブになりました.オフの場合、PHPは警告を発行し、fopenの呼び出しは失敗します.
contextのサポートはPHP 5.0である.0が追加されました.
ヒントとコメント
注記:オペレーティングシステムのファミリーによって、行の終了習慣が異なります.テキストファイルに書き込み、新しい行を挿入する場合は、オペレーティングシステムに適合する行終了記号を使用する必要があります.Unixベースのシステムは行終了文字、Windowsベースのシステムは行終了文字、Macintoshベースのシステムは行終了文字としてrを使用します.ファイルに書き込むときにエラーの行終了記号が使用されている場合、他のアプリケーションがこれらのファイルを開くときに変な表現をする可能性があります.
Windowsの下には、透過的にrに変換できるテキスト変換フラグ(「t」)が用意されています.これに対応して、「b」を使用してバイナリモードを強制的に使用することもでき、データを変換しません.これらのタグを使用するには、modeパラメータの最後の文字として「b」または「t」を使用します.
デフォルトの変換モードはSAPIと使用されているPHPバージョンに依存するため、移植奨励を容易にするために常に適切なタグを指定します.純粋なテキストファイルを操作し、スクリプトで行の終端として使用した場合、これらのファイルがNotepadなどの他のアプリケーションで読み込まれることを期待する場合は、modeで「t」を使用します.他のすべての場合に「b」を使用します.
バイナリファイルを操作するときに「b」タグを指定しないと、壊れたピクチャファイルやr文字に関する奇妙な問題など、奇妙な問題に遭遇する可能性があります.
注記:移植性を考慮するには、fopen()でファイルを開くときに常に「b」タグを使用することを強くお勧めします.
注記:もう一度、移植性を考慮すると、「t」モードに依存するコードを正しく行の終了子を使用して「b」モードに変更することを強くお勧めします.
例
<?php
$file = fopen("test.txt","r");
$file = fopen("/home/test/test.txt","r");
$file = fopen("/home/test/test.gif","wb");
$file = fopen("http://www.example.com/","r");
$file = fopen("ftp://user:[email protected]/test.txt","w");
?>