現在の位置: ホーム> 最新記事一覧> Fopenと協力するためにStream_is_localを使用できますか?ローカルファイルをすばやく検出する方法を共有します

Fopenと協力するためにStream_is_localを使用できますか?ローカルファイルをすばやく検出する方法を共有します

gitbox 2025-09-24

1。stream_is_localとは何ですか?

Stream_is_localは、PHPの組み込み関数です。その機能は、ファイルまたはストリームがローカルファイルシステムのファイルであるかどうかを確認することです。この関数はブール値を返し、指定されたストリームがローカルファイルシステムのファイルである場合にtrueを返し、それ以外の場合はfalseを返します。

 <span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">stream_is_local</span></span><span> ( resource </span><span><span class="hljs-variable">$stream</span></span><span> )
</span></span>

パラメーター説明:

  • $ stream :これは有効なストリームリソースです(ストリームリソースは、 FOPEN関数を介して取得できます)。

2。FopenおよびStream_is_localの使用方法は?

Fopenは、ファイルを開くためにPHPで使用される関数です。ローカルファイル、リモートファイル(HTTPやFTPプロトコルなど)などを開くことができます。Stream_is_local組み合わせて、ファイルがローカルファイルシステムに保存されているかどうかを判断できます。これは、ローカルファイル処理が必要な場合に特に役立ちます。

基本例:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$file_path</span></span><span> = </span><span><span class="hljs-string">'example.txt'</span></span><span>;

</span><span><span class="hljs-comment">// 使用 fopen ファイルを開きます</span></span><span>
</span><span><span class="hljs-variable">$handle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>, </span><span><span class="hljs-string">'r'</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$handle</span></span><span>) {
    </span><span><span class="hljs-comment">// ファイルがローカルファイルであるかどうかを判断します</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">stream_is_local</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>)) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ファイルはローカルファイルです。"</span></span><span>;
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ファイルはローカルファイルではありません。"</span></span><span>;
    }

    </span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"无法ファイルを開きます!"</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

この例では、 FOPENを介してexample.txtファイルを開きます。ファイルが正常に開かれた場合、 stream_is_localを使用して、ファイルがローカルファイルであるかどうかを確認します。

3。stream_is_localの実用的なアプリケーションシナリオ

実際の開発では、 Stream_is_localは複数のシナリオで適用できます。特に、ファイルパスがローカルパス、URL、またはその他のプロトコルになる場合は、ファイルがローカルに保存されているかどうかを判断する必要があります。

3.1アップロードされたファイルの処理

ユーザーがファイルをアップロードすると、URLまたはローカルファイルパスであるファイルパスがある場合があります。アップロードされたファイルがローカルファイルであるかどうかを確認する必要がある場合は、 stream_is_localを使用して以下を決定できます。

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$file_path</span></span><span> = </span><span><span class="hljs-variable">$_FILES</span></span><span>[</span><span><span class="hljs-string">'upload_file'</span></span><span>][</span><span><span class="hljs-string">'tmp_name'</span></span><span>];

</span><span><span class="hljs-comment">// アップロードされたファイルがローカルファイルであるかどうかを確認してください</span></span><span>
</span><span><span class="hljs-variable">$handle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>, </span><span><span class="hljs-string">'r'</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$handle</span></span><span>) {
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">stream_is_local</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>)) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"上传的ファイルはローカルファイルです。"</span></span><span>;
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"上传的ファイルはローカルファイルではありません。"</span></span><span>;
    }
    </span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"アップロードされたファイルを読み取ることができません!"</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

3.2リモートファイルとローカルファイルを区別します

場合によっては、ファイルのソース(ローカルまたはリモート)に基づいて、後続の操作を決定する必要がある場合があります。たとえば、ファイルをダウンロードする必要がある場合は、ローカルファイルに優先順位を付けることができます。そうしないと、リモートファイルのダウンロードが実行されます。

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$file_path</span></span><span> = </span><span><span class="hljs-string">'https://example.com/file.txt'</span></span><span>;

</span><span><span class="hljs-comment">// 合格 fopen ファイルを開きます流</span></span><span>
</span><span><span class="hljs-variable">$handle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fopen</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>, </span><span><span class="hljs-string">'r'</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$handle</span></span><span>) {
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">stream_is_local</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>)) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"これはローカルファイルです,ローカルファイル操作を実行します。"</span></span><span>;
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"これはリモートファイルです,リモートファイルのダウンロード操作を実行します。"</span></span><span>;
    }
    </span><span><span class="hljs-title function_ invoke__">fclose</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"无法ファイルを開きます!"</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

4。注意すべきこと

  • Stream_is_localは、リソースのストリーミングにのみ適しています。有効なストリームリソースが渡されない場合、関数はfalseを返します。

  • この関数は、ファイルストリームがローカルファイルシステムから来るかどうかを判断するためにのみ使用でき、ファイルの実際のコンテンツ、アクセス許可、または存在を決定できません。

5。概要

Stream_is_localFopenの組み合わせは、ファイルを処理するときにファイルがローカルファイルシステムから来るかどうかを開発者が迅速に判断するのに効果的に役立ちます。これは、特にローカルファイルとリモートファイルを区別する必要がある場合、多くのアプリケーションシナリオで非常に実用的です。これら2つの機能を通じて、対応する運用上の決定を簡単に行い、開発効率を向上させることができます。