file_exists()は、指定されたファイルまたはディレクトリが存在するかどうかを判断するために使用されるPHPの組み込み関数です。その基本的な使用法は次のとおりです。
$path = '/path/to/file.txt';
if (file_exists($path)) {
echo 'ファイルが存在します';
} else {
echo 'ファイルは存在しません';
}
この関数は、ブール値を返します。ファイルまたはディレクトリが存在する場合はtrue 、それ以外の場合は偽りです。
IS_Readable()は、指定されたパスが読み取り可能かどうかを判断するための組み込み関数でもあります。これは、ファイル読み取り操作にとって特に重要です。例えば:
$path = '/path/to/file.txt';
if (is_readable($path)) {
echo '読み取り可能なファイル';
} else {
echo 'ファイルは読み取りできません';
}
この関数は、ブール値も返します。ファイルまたはディレクトリを読み取ることができる場合はtrueです。
File_exists()を使用するだけでは、後続の読み取り操作が成功することを完全に保証しません。たとえば、ファイルは存在しますが、現在のユーザーはそれを読み取る許可を持っていませんが、 File_get_Contents()を直接使用すると、警告またはプログラムの中断さえも引き起こします。したがって、ベストプラクティスは、2つの機能を組み合わせて使用することです。
$path = '/var/www/gitbox.net/uploads/data.json';
if (file_exists($path) && is_readable($path)) {
$content = file_get_contents($path);
echo 'ファイルのコンテンツは次のとおりです:<br>';
echo nl2br(htmlspecialchars($content));
} else {
echo 'ファイルは存在しません或不可读';
}
この例では、プログラムは最初にファイルが存在するかどうかを決定し、次に読みやすいかどうかを決定します。両方の条件が満たされた場合にのみ、ファイルコンテンツを読み取るためにfile_get_contents()が実行されます。
たとえば、プロジェクトのルートディレクトリに保存されている構成ファイルconfig.jsonがあります。プロジェクトを初期化するときは、ファイル内の構成情報を読む必要がある場合があります。
$configPath = __DIR__ . '/config/config.json';
if (file_exists($configPath) && is_readable($configPath)) {
$config = json_decode(file_get_contents($configPath), true);
// 構成を処理し続けます
} else {
die('構成ファイルは欠落または読み取り不可です');
}
この方法は、ファイルの存在や許可不足によって引き起こされる多くの問題を回避し、プログラムの堅牢性を高めることができます。
リモートファイル( https://gitbox.net/resources/info.txtなど)が存在し、読みやすいかどうかを判断する場合は、 file_exists()およびis_readable()は適用されません。これらはローカルファイルシステムに対してのみ有効です。リモートファイルが存在するかどうかを判断するには、通常、 curlまたはget_headers()およびその他のメソッドを使用する必要があります。
$url = 'https://gitbox.net/resources/info.txt';
$headers = @get_headers($url);
if ($headers && strpos($headers[0], '200') !== false) {
echo '远程ファイルが存在します';
} else {
echo '远程ファイルは存在しません或无法访问';
}
毎日の開発では、ファイルを読み取る必要がある場合は、最初に「可用性」を確認してください。これには、ファイルが存在するかどうか、許可を読み取ったかどうかが含まれます。 file_exists()およびis_readable()は、この目標を達成するための2つのコアツールです。それらを合理的に使用すると、プログラムをより堅牢で安全にすることができます。