PHP に絶対パスと相対パスを含める
サーバーでもローカル PC でも、PHP プログラムを実行するパスが違いを生み、重要です。間違ったディレクトリで実行している場合は、相対と[絶対]の 2 種類のパスの使用方法を理解することが重要です。
どちらも重要ですが、特に絶対パスではなく PHP アプリケーション全体のコンテキスト内で、絶対パスを使用することがよくあります。
この記事では、PHP 内で絶対パスと相対パスを使用または含める方法について説明します。
PHP の絶対パスと相対パス
PHP アプリケーション内であろうとローカルコンピューター内であろうと、絶対パスはシステムのルートディレクトリからの相対的なファイルまたはディレクトリの場所です。ただし、相対パスは、現在のディレクトリを基準にしたファイルシステム内の特定の場所を指します。
これは、Unix または Linux での絶対パスです。
/home/user/devs
Windows PC では、絶対パスは次のようになります。
C:\AMD\Chipset_Software
ただし、ほとんどの PHP サーバーでは Linux パスシステムがよく使用されます。
ただし、相対パスは次のようになります。
../devs
上記のコードスニペットは、devs ディレクトリの親ディレクトリを表し、Windows でも同じ .. を使用できます。C:\Users\HP\Documents ディレクトリにいるとします。次のコマンドを使用して、HP の子である Downloads ディレクトリに移動できます。
cd ..\Downloads
PHP に絶対パスと相対パスを含めるには、include() と dirname() を使用する
絶対パスと相対パスにアクセスするには、dirname() 関数と __FILE__ という名前の魔法の定数が必要です。魔法の定数 __FILE__ は、実行されている PHP ファイルのフルパスと名前を返します。
dirname() 関数は、親ディレクトリのパスを返します。__FILE__ 関数と dirname() 関数を一緒に使用すると、include キーワードを介して操作しているファイルが同じディレクトリ内にある場合、処理しているファイルへの絶対ルートパスを取得できます。。
include(dirname(__FILE__).'/functions.php');
dirname(__FILE__) の結果は次のとおりです。
/home/runner/ScholarlyOvalFirewall
ただし、操作する PHP ファイルが現在の作業ディレクトリの親ディレクトリ内にあるとします。その場合、末尾のスラッシュなしで現在のファイルのディレクトリを返すため、__DIR__ 定数を使用できます。
include(dirname(__DIR__).'/functions.php');
dirname(__FILE__) の結果は次のとおりです。
/home/runner/
たとえば、相対パスだけで作業するつもりです。以下の関数を作成することで、これを行うことができます。
function relativepath($to){
$a=explode("/",dirname(__FILE__));
$index= array_search("$to",$a);
$str="";
for ($i = 0; $i < count($a)-$index-2; $i++) {
$str.= "../";
}
return $str;
}
$st = relativepath('main.php');
echo $st;
関数の引数は PHP ファイルの名前であり、絶対パス文字列を/記号で配列に分割し、指定された PHP ファイルを検索することで機能します。その後、一連の ../が $str 変数に追加され、ルートへの相対パスが提供されます。
また、必要に応じて、dirname() 関数、define() 関数、および任意の魔法の定数 __DIR__ と __FILE__ を使用してルートパスを定義できます。
define('ROOT_PATH', dirname(__DIR__) . '/');
ROOT_PATH は/home/runner になりました。
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn