realpath

正規化された絶対パス名を返す

説明

stringfalse realpath(string $path)

realpath は、 入力 path のシンボリックリンクをすべて展開し、 /.//../ および / などの参照をすべて解決することにより、正規化された絶対パスを返します。

パラメータ

path

調べたいパス。

注意:

path の指定は必須ですが、空の文字列を指定することもできます。 その場合はカレントディレクトリを指定したものとみなします。

戻り値

成功した場合は、正規化された絶対パス名を返します。 返されるパスはシンボリックリンク、/./ および /../ 要素を含みません。 パスの末尾の区切り文字 (\/ など) は削除されます。

realpath は、 たとえばファイルが存在しないなどの失敗時に false を返します。

注意:

指定した階層にあるすべてのディレクトリに対して、 実行中のスクリプトからの実行権限が必要です。もし権限がなければ realpathfalse を返します。

注意:

大文字小文字を区別しないファイルシステムの場合は、realpath が大文字小文字をどちらかにそろえるかもしれないし、そろえないかもしれません。

注意:

realpath 関数は、Phar の内部にあるファイルに対しては機能しません。 そのようなパスは、実際のパスではなく仮想パスになるからです。

注意:

Windows では、ディレクトリへのシンボリックリンクとジャンクションは、ひとつ分しか展開されません。

注意: PHP の数値型は符号付整数であり、 多くのプラットフォームでは 32 ビットの整数を取るため、 ファイルシステム関数の中には 2GB より大きなファイルについては期待とは違う値を返すものがあります。

例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'), PHP_EOL;

echo realpath('C:\Program Files\\'), PHP_EOL;
?>

上の例の出力は以下となります。

C:\WINDOWS\System32
C:\Program Files

参考

  • basename
  • dirname
  • pathinfo