【PHP】require_onceで読み込むファイルを絶対パスで指定する

ファイルから別ファイルの読み込みを行うrequire_once文で、
対象ファイルを絶対パスで指定する方法をメモします。

環境:PHP 7.4.4


相対パスでファイルを読み込む例

(以下のようなファイルの構成を例に)

「index.php」(実行ファイル)

src/execute.phpを相対パス指定で読み込む。

「src/execute.php」

config/config.phpを相対パス指定で読み込む。

(注意)
require_once文で指定するファイル(読み込み先)のパスは
require_once文を記述したファイルからのパスではなく、
実行ファイルからのパスを記述する。

「config/config.php」


実行ファイルを変更する

実行ファイルを「index.php」から「src/main.php」へ変更する。

「src/main.php」
index.phpと同様、execute.phpを相対パス指定で読み込む。


相対パスの問題点

実行ファイルをindex.phpから、src/main.phpへ変更した為、
src/execute.php内からconfig/config.phpを読み込むrequire_once文の相対パス指定を変更する必要がある。

(変更前) index.phpからのパス
config/config.php

(変更後)src/main.phpからのパス


ファイルの指定を絶対パスへ変更する

index.php、 src/main.phpのどちらからでも実行出来るように、
src/execute.php内のrequire_once文の記述を以下のように絶対パス指定へ変更する。

「src/execute.php」

「require_once __DIR__ . ’/読み込むファイルのパス’」

require_onceを記述したファイル自身の※絶対パスを指定し、
その後ろに読み込む対象ファイルを、自身から見たパスで記述する。

※定数 __DIR__ は自身(記述したファイル)が存在しているディレクトリ名を絶対パスで返す。

このような記述に変更する事で実行ファイルのパスの影響を受けずに必要なファイルを読み込む事が出来ます。

実行ファイルも同様に絶対パスでの記述に変更しておきます。

index.php

src/main.php


require_onceでの読み込みはファイル構成の変更や拡張性のし易さを考慮して
相対パスよりも絶対パスでの記述の方が良いと思います。

Follow me!