(PHP 4, PHP 5, PHP 7)
realpath — 正規化された絶対パス名を返す
$path
)
realpath() は、
入力 path
のシンボリックリンクをすべて展開し、
「/./」「/../」「/」などの参照をすべて解決することにより、正規化された絶対パスを返します。
path
調べたいパス。
注意:
path の指定は必須ですが、空白や
NULL
を指定することもできます。 その場合はカレントディレクトリを指定したものとみなします。
成功した場合は、正規化された絶対パス名を返します。 返されるパスはシンボリックリンクや「/./」「/../」要素を含みません。 パスの末尾の区切り文字 (\ や / など) は削除されます。
realpath() は、
たとえばファイルが存在しないなどの失敗時に FALSE
を返します。
注意:
指定した階層にあるすべてのディレクトリに対して、 実行中のスクリプトからの実行権限が必要です。もし権限がなければ realpath() は
FALSE
を返します。
注意:
大文字小文字を区別しないファイルシステムの場合は、realpath() が大文字小文字をどちらかにそろえるかもしれないし、そろえないかもしれません。
注意: PHP の数値型は符号付整数であり、 多くのプラットフォームでは 32 ビットの整数を取るため、 ファイルシステム関数の中には 2GB より大きなファイルについては期待とは違う値を返すものがあります。
バージョン | 説明 |
---|---|
5.3.0 |
これより前のバージョンでは、*BSD システムでは realpath()
は最後の path
コンポーネントのみが存在しない場合には失敗となりませんでした。
このバージョン以降では失敗となります。
|
5.2.1 |
これより前のバージョンでは、path が空文字列あるいは NULL の場合に
realpath() は FALSE を返していました。
|
例1 realpath() の例
<?php
chdir('/var/www/');
echo realpath('./../../etc/passwd') . PHP_EOL;
echo realpath('/tmp/') . PHP_EOL;
?>
上の例の出力は以下となります。
/etc/passwd /tmp
例2 Windows 上での realpath()
Windows 上で realpath() を実行すると、Unix 形式のパスを Windows 形式に変更します。
<?php
echo realpath('/windows/system32');
echo realpath('C:\Program Files\\');
?>
上の例の出力は以下となります。
C:\WINDOWS\System32 C:\Program Files