Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】diskfreespace()関数の使い方

diskfreespace関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

diskfreespace関数は、指定したディレクトリが存在するファイルシステムの、利用可能なディスクの空き容量を取得する関数です。この関数は、アプリケーションがファイルを保存する前に十分なディスクスペースがあるかを確認したり、システムのリソース状況を監視したりする際に非常に役立ちます。

この関数を使用する際は、空き容量を調べたいディレクトリのパスを文字列として引数に指定します。例えば、ウェブアプリケーションのログファイルを保存するディレクトリや、一時ファイルを格納するディレクトリのパスなどです。関数が正常に実行されると、指定されたディレクトリが含まれるファイルシステム全体の利用可能な空き容量が、バイト単位の浮動小数点数(float)として返されます。これにより、ギガバイトやテラバイトといった大容量のディスクスペースでも正確な値を取得できます。

もし、指定したディレクトリが見つからない、またはアクセス権がないなどの理由でエラーが発生した場合は、この関数はfalseを返します。そのため、戻り値を常に確認し、エラーハンドリングを行うことが重要です。特に、ネットワークドライブのような特定の環境では、OSが報告する空き容量が実際の値と異なる場合があるため、利用する際は注意が必要です。PHP 8の環境では、戻り値が常に浮動小数点数であることを念頭に置いてプログラミングしてください。

構文(syntax)

1diskfreespace(string $directory);

引数(parameters)

string $directory

  • string $directory: 空き容量を確認したいディレクトリのパスを指定する文字列

戻り値(return)

int|false

指定されたディレクトリの空き容量をバイト単位で返します。エラーが発生した場合は false を返します。

サンプルコード

PHPでディスク空き容量を取得する

1<?php
2
3/**
4 * 指定されたディレクトリが属するパーティションの空き容量をGB単位で取得します。
5 *
6 * @param string $directory 検査対象のディレクトリパス (例: './', '/var/www/html', 'C:\\')
7 * @return float|false ディスクの空き容量 (GB単位)。取得に失敗した場合は false を返します。
8 */
9function getDiskFreeSpaceInGB(string $directory): float|false
10{
11    // diskfreespace() は、指定されたディレクトリが属するパーティションの
12    // 空き容量をバイト単位で返します。失敗した場合は false を返します。
13    $bytes = diskfreespace($directory);
14
15    // 取得に失敗した場合
16    if ($bytes === false) {
17        return false;
18    }
19
20    // バイトをギガバイトに変換します。
21    // 1GB = 1024MB = 1024 * 1024KB = 1024 * 1024 * 1024 バイト
22    $gigabytes = $bytes / (1024 * 1024 * 1024);
23
24    return $gigabytes;
25}
26
27// --- サンプルコードの実行部分 ---
28
29// 検査対象のディレクトリを指定します。
30// 現在のスクリプトがあるディレクトリを指定する場合: './'
31// LinuxなどのOSでルートディレクトリを指定する場合: '/'
32// WindowsでCドライブを指定する場合: 'C:\\'
33$targetDirectory = './'; 
34
35echo "▼ ディスク空き容量の確認 ▼" . PHP_EOL;
36echo "対象ディレクトリ: " . $targetDirectory . PHP_EOL;
37
38// ディスク空き容量を取得します。
39$freeSpaceGB = getDiskFreeSpaceInGB($targetDirectory);
40
41// 取得結果を確認し、表示します。
42if ($freeSpaceGB !== false) {
43    // 取得したGB値を小数点以下2桁に丸めて表示します。
44    echo "空き容量: " . round($freeSpaceGB, 2) . " GB" . PHP_EOL;
45} else {
46    // 空き容量の取得に失敗した場合のエラーメッセージ
47    echo "エラー: 指定されたディレクトリ ('" . $targetDirectory . "') のディスク空き容量を取得できませんでした。" . PHP_EOL;
48    echo "  - ディレクトリが存在するか確認してください。" . PHP_EOL;
49    echo "  - PHPスクリプトにディレクトリへのアクセス権があるか確認してください。" . PHP_EOL;
50}
51
52?>

PHPのdiskfreespace関数は、特定のディレクトリが属するディスクパーティションの空き容量を調べるための機能です。引数$directoryには、空き容量を確認したいディレクトリのパスを文字列で指定します。例えば、現在のディレクトリを示す'./'や、Windows環境の'C:\\'などが考えられます。この関数は、処理が成功するとそのディレクトリの空き容量をバイト単位の整数で返しますが、失敗した場合にはfalseを返します。

提供されたサンプルコードでは、diskfreespace関数を使いやすくするためのカスタム関数getDiskFreeSpaceInGBを定義しています。このgetDiskFreeSpaceInGB関数は、diskfreespaceが返したバイト単位の値をギガバイト(GB)に変換し、浮動小数点数として返却します。また、diskfreespaceの実行が失敗してfalseが返された際には、このカスタム関数もfalseを返すように設計されており、呼び出し元でエラーを容易に判断できるように配慮されています。

サンプルコードの実行部分では、現在のディレクトリを対象としてgetDiskFreeSpaceInGB関数を呼び出し、取得した空き容量を小数点以下2桁で表示しています。空き容量の取得に失敗した場合も想定されており、その際にはエラーメッセージとともに、ディレクトリの存在確認やアクセス権の確認といった、システムエンジニアとして問題解決に役立つヒントが提示されています。これは、実際の開発における堅牢なエラーハンドリングの重要性を示しています。

diskfreespace関数は、指定されたディレクトリが属するパーティションの空き容量をバイト単位で返します。そのため、ギガバイトなどに変換する際は適切な計算が必要です。関数が失敗した場合はfalseを返しますので、必ず=== falseで厳密にチェックし、エラーハンドリングを行ってください。指定されたディレクトリが存在しない場合や、PHPが動作するプロセスにそのディレクトリへのアクセス権限がない場合、空き容量が取得できないことがあります。実行環境におけるディレクトリパスの指定方法とアクセス権限設定を適切に確認することが重要です。

関連コンテンツ

関連プログラミング言語