【PHP】絶対パスを取得する方法
PHPで絶対パス(フルパス)を取得する方法をまとめています。
絶対パスを取得する方法
PHPでLinuxコマンドを叩くときなどに絶対パスが必要になりますが、次の2つの方法でやりたいことができると思います。
- 実行ファイルの絶対パスを取得
- 相対パスを絶対パスに変換
実行中のファイルの絶対パスを取得
PHPを実行しているファイルの絶対パスを取得したい場合、自動的に定義される定数の一つである「__FILE__」を使えばよいです(半角アンダーラインが両サイドに2つずつ)。
__FILE__
これは、実行中のファイルの絶対パス(インクルードされたファイルの場合はその名前)が返されます。
//実行中のファイルの絶対パスを取得 echo __FILE__ ;
これを実行するとこのようにそのファイルの絶対パスが返されます。
/home/***/www/test/hoge.php
相対パスを絶対パスに変換
PHPでプログラミングをしているときに相対パスを絶対パスに変換したい時がありますが、realpath関数を使えば変換できます。
realpath("ここに相対パス");
第1引数に空白や「null」を渡すとカレントディレクトリの絶対パスが、存在しない相対パスを指定した場合にはfalseが返されます。
指定した相対パスに含まれるすべてのディレクトリに対して、実行スクリプトの権限がない場合はfalseが返されます。
//相対パス $path = "./test/hoge.jpg"; //相対パスを絶対パスに変換 echo realpath($path); //nullを渡す echo realpath(null);
これを実行するとこのようにサーバー内の絶対パスが取得できます。
/var/www/html/test/hoge.jpg
/var/www/html
パスの操作
蛇足になりますが、取得した絶対パスから
- ファイルが存在するディレクトリ
- ファイル名
- ファイルの拡張子
を取得したい場合は次のようにします。
//ファイルが存在するディレクトリ(最後にスラッシュはつかない) echo dirname(__FILE__); //ファイル名 echo basename(__FILE__); //ファイルの拡張子 echo basename(__FILE__, '.php');
これを実行するとこうなります。
/home/***/www/test hoge.php hoge
なお、「__DIR__」定数を使ってもカレントディレクトリが取得できます。
echo __DIR__;
これを実行するとこうなります。
/home/***/www/test
もう一つの方法
またまた蛇足ですが、pathinfo関数を使ってもパスの操作ができます。
//絶対パス $full_path = "/var/www/html/test/hoge.jpg"; //パスインフォの取得 $path_info = pathinfo($full_path); //配列参照 print_r($path_info);
これを実行するとこうなります。
Array ( [dirname] => /var/www/html/test [basename] => hoge.jpg [extension] => jpg [filename] => hoge )
あわせて読んでほしい!
コメント
まだコメントはありません。