ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHP チュートリアルでリモート イメージ ファイルが存在するかどうかを確認する方法
最も簡単な方法は、fopen() を使用してファイルが開けるかどうかを確認することです。開ける場合、ファイルは当然存在します。
リーリーfopen() 関数はファイルまたは URL を開きます。オープンに失敗した場合、関数は FALSE を返します。
構文: fopen(ファイル名,モード,インクルードパス,コンテキスト)
パラメータ | 説明 |
---|---|
ファイル名 | は必須です。開くファイルまたは URL を指定します。 |
モード | が必要です。このファイル/ストリームに必要なアクセスのタイプを指定します。可能な値を以下の表に示します。 |
include_path | オプション。 include_path 内のファイルも取得する必要がある場合は、このパラメータを 1 または TRUE に設定できます。 |
コンテキスト | オプション。ファイルハンドルの環境を指定します。コンテキストは、ストリームの動作を変更できるオプションのセットです。 |
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 で指定された名前リソースをストリームにバインドします。ファイル名が「scheme://...」の形式である場合、それは URL として扱われ、PHP はスキームを処理するためのプロトコル ハンドラー (ラッパー プロトコルとも呼ばれます) を検索します。ラッパー プロトコルがそのプロトコルに登録されていない場合、PHP はスクリプト内の潜在的な問題をチェックするのに役立つメッセージを発行し、通常のファイル名であるかのようにファイル名の実行を続行します。
PHP が filename がローカル ファイルを指定していると判断した場合、そのファイルのストリームを開こうとします。ファイルは PHP からアクセスできる必要があるため、ファイル アクセス許可でこのアクセスが許可されていることを確認する必要があります。セーフ モードまたは open_basedir がアクティブ化されている場合は、さらに制限が適用されます。
ファイル名が登録されたプロトコルを指定しており、そのプロトコルがネットワーク URL として登録されていると PHP が判断した場合、PHP は、allow_url_fopen がアクティブ化されていることを確認します。閉じている場合、PHP は警告を発行し、fopen の呼び出しは失敗します。
fopenの使い方
リーリーただし、画像リソースが配置されているサーバーがハングアップすると、この機能は永遠に待機することになるため、バックアップ計画が必要です。
CURL は非常に便利なクラス ライブラリです。これを使って判断する方法を見てみましょう。
リーリーcurl_exec() の実行後、ファイルが存在しない場合は、次の情報が返されます:
リーリー正規表現を使用して、404 があるかどうかを確認します。404 がある場合、ファイルは存在しません。