ホームページ > バックエンド開発 > PHPの問題 > php filesize() が正しい結果を返さない場合の対処方法

php filesize() が正しい結果を返さない場合の対処方法

PHPz
リリース: 2023-04-12 14:17:59
オリジナル
1055 人が閲覧しました

PHP 関数filesize() は、ファイルのサイズを返すことができる非常に便利な関数です。この関数は通常、ほとんどの場合に正常に動作します。ただし、場合によっては filesize() メソッドが正しい結果を返さない場合でも、この状況は解決できるため心配する必要はありません。

次に、filesize() が場合によっては正しい結果を返さない理由を調べてみましょう。同時に、コードが適切に動作するように、この問題を解決するためのいくつかの方法も紹介します。

問題: PHP 関数 filesize() 正しい結果が返されない

場合によっては、filesize() メソッドが間違ったファイルを返す可能性がありますサイズ値は、次の状況によって発生します:

1. ファイル パス エラー

filesize()関数要件 正しいファイルを渡す寸法を取得するファイルへのパス。間違ったパスを使用すると、関数はファイルを見つけることができないため、エラー値が返されます。したがって、filesize() 関数を使用する前に、正しいファイル パスを渡していることを確認してください。

2. getFileSize() のデフォルトの戻り値

仮想ホストを使用している場合、特定の状況下でこの問題が発生する可能性があります。この場合、file_get_contents() 関数を使用してファイルのサイズを取得してみてください。ただし、ファイル サイズを取得するときに PHP が使用する方法はサーバー環境と PHP のバージョンに依存するため、この方法は依然としてすべての場合に機能するとは限りません。上記の方法を試してもエラーが発生する場合は、getFileSize() 関数のデフォルトの戻り値に問題がある可能性があります。この問題を解決するには、ファイル サイズを手動で計算します。

3. ファイルの暗号化と保護

一部の Web サイトやサーバーでは、暗号化と保護を使用してアクセスを制限したり、さまざまな方法でファイルを保存したりすることがあります。 filesize()そのようなファイルのサイズを読み取ることができません。この問題は、サーバーにファイルを復号化するか、パスワードを提供するように要求することで解決できます。

4. ファイルのロック

ファイルが別のプログラムによってロックされている場合、

filesize() 関数がブロックされる可能性があります。これは通常、ファイルを開いた(ログ ファイルへの書き込みなど)が、ファイル ハンドルを閉じていない場合に発生します。この問題を回避するには、ファイルを開いた後は必ずすぐにファイル ハンドルを閉じるようにしてください。

解決策: ファイル サイズを手動で計算する

filesize() が正しい結果を返さない場合は、ファイル サイズを手動で計算してみることができます。 PHP の fseek() 関数と ftell() 関数を使用して、現在位置とファイルの末尾の間の距離を取得できます。このメソッドを使用したコード例を次に示します。

function getFileSize($filename) {
    $handle = fopen($filename, "r");
    fseek($handle, 0, SEEK_END);
    $size_in_bytes = ftell($handle);
    fclose($handle);
    return $size_in_bytes;
}
ログイン後にコピー
このコード例では、ファイルを開き、ファイル ポインターをファイルの末尾に移動し、

ftell() を使用します。ファイルの末尾位置を取得し、ファイル ハンドルを閉じる関数。最後にファイルサイズが返されます。

概要:

この記事を通じて、

filesize() メソッドが場合によっては正しい結果を返さない理由を理解できたはずです。それまでの間、コードが適切に動作することを確認するために、この問題に対するいくつかの解決策を共有しました。 filesize() の使用中に問題が発生した場合は、ファイル サイズを手動で計算する方法を使用するか、ファイル パス、ファイル ロック、ファイル暗号化などの要因が filesize()# の原因となっているかどうかを確認できます。 ## 結果は間違っています。

以上がphp filesize() が正しい結果を返さない場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート