【PHP8.x】disk_free_space関数の使い方

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

作成日: 更新日:

基本的な使い方

disk_free_space関数は、指定されたファイルシステムまたはディレクトリの利用可能な空き容量をバイト単位で取得する関数です。この関数は、ウェブサーバーやアプリケーションが稼働するシステムのディスク領域がどれくらい残っているかを確認したい場合に非常に役立ちます。

利用する際は、引数として確認したいディレクトリのパスを文字列で指定します。このパスは、ルートからの絶対パス(例: /var/www/html)でも、現在のスクリプト位置からの相対パス(例: ../uploads)でも指定可能です。

関数が正常に実行されると、そのファイルシステムで利用可能な空き領域の合計バイト数を整数値として返します。例えば、10737418240バイトが空いている場合、この数値がそのまま返されます。もし何らかの理由で空き容量の取得に失敗した場合は、falseが戻り値として返されますので、この戻り値を確認して適切なエラー処理を行うことが重要です。

取得した値はバイト単位であるため、ユーザーに表示する際には、キロバイト(KB)、メガバイト(MB)、ギガバイト(GB)といった、人間が読みやすい単位に変換する処理を別途実装することが一般的です。この関数は、例えばユーザーがファイルをアップロードする前に十分なディスク空き容量があるかを確認したり、システムログなどの書き込み処理を行う前にディスク使用量を監視したりする際に活用できます。

構文(syntax)

1<?php
2
3$free_space_in_bytes = disk_free_space('/path/to/directory');
4
5?>

引数(parameters)

string $directory

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

戻り値(return)

float|false

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

サンプルコード

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

1<?php
2
3/**
4 * 指定されたディレクトリのディスク空き容量を計算し、表示します。
5 *
6 * @param string $directory 調査対象のディレクトリパス。例: '.', '/tmp', 'C:\\'
7 * @return void
8 */
9function showDiskFreeSpace(string $directory): void
10{
11    // disk_free_space関数を使って、指定されたディレクトリの空き容量(バイト単位)を取得します。
12    // 取得に失敗した場合、falseを返します。
13    $freeSpaceBytes = disk_free_space($directory);
14
15    // 空き容量の取得に失敗した場合の処理
16    if ($freeSpaceBytes === false) {
17        echo "エラー: ディレクトリ '{$directory}' の空き容量を取得できませんでした。\n";
18        echo "指定されたパスが有効か、またはアクセス権があるか確認してください。\n";
19        return;
20    }
21
22    // バイト単位の容量を、より一般的な単位(KB, MB, GB)に変換します。
23    $freeSpaceKB = $freeSpaceBytes / 1024;
24    $freeSpaceMB = $freeSpaceKB / 1024;
25    $freeSpaceGB = $freeSpaceMB / 1024;
26
27    // 結果を分かりやすい形式で表示します。
28    // number_format関数は数字を読みやすい形式(例: 1,234,567)に整形します。
29    echo "ディレクトリ '{$directory}' のディスク空き容量:\n";
30    echo "  バイト (Bytes): " . number_format($freeSpaceBytes) . " B\n";
31    echo "  キロバイト (KB): " . number_format($freeSpaceKB, 2) . " KB\n";
32    echo "  メガバイト (MB): " . number_format($freeSpaceMB, 2) . " MB\n";
33    echo "  ギガバイト (GB): " . number_format($freeSpaceGB, 2) . " GB\n";
34}
35
36// 現在のスクリプトが実行されているディレクトリ('.')の空き容量を表示する例
37showDiskFreeSpace('.');
38
39// 他のディレクトリを指定する場合の例 (コメントを外して使用できます)
40// showDiskFreeSpace('/var/log'); // Linux/macOSの場合
41// showDiskFreeSpace('C:\\'); // Windowsの場合
42
43?>

PHPのdisk_free_space関数は、指定されたディレクトリのディスク空き容量を調査するために使用される関数です。この関数は、サーバーやPCのストレージの残量を確認したい場合に非常に役立ちます。

引数にはstring $directoryとして、調べたいディレクトリのパスを指定します。例えば、現在のディレクトリを示す'.'や、Windowsなら'C:\\'、Linuxなら'/var/log'といった具体的なパスを指定します。

関数が正常に実行されると、そのディレクトリの空き容量がバイト単位の浮動小数点数(float)として返されます。もし指定されたパスが無効であるか、またはアクセス権がないなどの理由で取得に失敗した場合は、falseが返されるため、必ず取得結果がfalseでないかを確認するエラー処理を行うことが重要です。

提供されたサンプルコードでは、disk_free_space関数で取得したバイト単位の空き容量を、キロバイト(KB)、メガバイト(MB)、ギガバイト(GB)といった人間が理解しやすい単位に変換して表示しています。また、空き容量の取得に失敗した際のエラーメッセージも表示するように考慮されており、初心者の方でも実際のアプリケーションで利用しやすいように工夫されています。この関数を使いこなすことで、システムのリソース管理や監視といった場面で、ディスクの空き状況をプログラムから確認し、適切な処理を行うことが可能になります。

disk_free_space関数は、指定されたディレクトリの空き容量をバイト単位で返しますが、取得に失敗した場合はfalseを返します。そのため、常に戻り値がfalseでないかを確認し、適切にエラー処理を行うことが非常に重要です。ディレクトリパスはWindowsとLinux/macOSで記述方法が異なるため、実行環境に合わせて正しく指定してください。また、関数が正常に動作するためには、指定したディレクトリへの読み取り権限が必要です。アクセス権がない場合やパスが無効な場合は、空き容量を取得できませんのでご注意ください。取得したバイト値は非常に大きくなることがあるため、必要に応じてキロバイト、メガバイト、ギガバイトなどの単位に変換すると分かりやすくなります。

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

1<?php
2
3/**
4 * 指定されたディレクトリの空き容量をギガバイト (GB) 単位で取得します。
5 *
6 * @param string $directory 調査するディレクトリのパス(例: '/' for Linux root)。
7 * @return float|false ディレクトリの空き容量(GB単位)。取得に失敗した場合は false を返します。
8 */
9function getDiskFreeSpaceInGigabytes(string $directory): float|false
10{
11    // disk_free_space 関数は、指定されたディレクトリの空き容量をバイト単位で返します。
12    // 取得に失敗した場合(例: 存在しないパスやアクセス権がない場合)は false を返します。
13    $bytes = disk_free_space($directory);
14
15    if ($bytes === false) {
16        // 空き容量の取得に失敗した場合は false を返す
17        return false;
18    }
19
20    // バイトをギガバイトに変換します。
21    // 1 GB = 1024 MB = 1024 * 1024 KB = 1024 * 1024 * 1024 バイト
22    $gigabytes = $bytes / (1024 * 1024 * 1024);
23
24    return $gigabytes;
25}
26
27// 例: Linux システムのルートディレクトリ '/' の空き容量を調べます。
28// 他にも '/tmp' や '/var' など、アクセス可能なディレクトリパスを指定できます。
29$targetDirectory = '/';
30
31echo "指定ディレクトリ: " . $targetDirectory . PHP_EOL;
32
33// 関数を呼び出し、空き容量を取得します。
34$freeSpaceGB = getDiskFreeSpaceInGigabytes($targetDirectory);
35
36if ($freeSpaceGB === false) {
37    // 空き容量の取得に失敗した場合のエラー処理
38    echo "エラー: ディレクトリ '{$targetDirectory}' の空き容量を取得できませんでした。" . PHP_EOL;
39    echo "パスが存在するか、またはアクセス権があるか確認してください。" . PHP_EOL;
40} else {
41    // 取得した空き容量を小数点以下2桁で表示します。
42    echo "空き容量: " . sprintf("%.2f", $freeSpaceGB) . " GB" . PHP_EOL;
43}
44

このPHPサンプルコードは、指定されたディレクトリのディスク空き容量をギガバイト(GB)単位で取得し表示する方法を示しています。PHPの標準関数であるdisk_free_spaceは、引数として渡されたディレクトリパスの空き容量をバイト単位で返します。例えば、Linuxシステムでルートディレクトリの空き容量を調べたい場合は、引数に/を指定します。この関数は、空き容量の取得に成功するとfloat型のバイト数を返し、失敗した場合はfalseを返します。

サンプルコードでは、このdisk_free_space関数を内部で利用し、バイト単位で取得した値をギガバイトに変換して返すgetDiskFreeSpaceInGigabytesというカスタム関数を定義しています。これにより、より人間が理解しやすい単位で容量を確認できます。このカスタム関数も、容量の取得に失敗した場合にはfalseを返します。

実際にコードを実行する部分では、getDiskFreeSpaceInGigabytes関数を呼び出し、戻り値がfalseでないかを確認しています。falseが返された場合は、エラーメッセージを表示して、パスの存在やアクセス権を確認するよう促します。成功した場合は、取得したギガバイト単位の空き容量を小数点以下2桁で整形して出力します。この機能は、サーバーのディスク使用状況を監視するシステム開発などで利用できます。

引数に指定するディレクトリパスは、PHP実行環境から読み取り権限を持つ実在するパスである必要があります。Linux環境ではルートディレクトリの/などが利用されますが、アクセス制限により情報が取得できない場合もあります。disk_free_space関数は空き容量をバイト単位で返すため、ギガバイトなどに変換する際は1024の3乗で割る計算が正確です。また、容量の取得に失敗した場合、この関数は戻り値としてfalseを返します。必ずこのfalseをチェックし、適切なエラー処理を行うことで、予期せぬ動作や情報の欠落を防ぐことができます。

関連コンテンツ