エンジニアのひよこ_level10

【毎日更新!】新卒2年目エンジニアブログです! プログラムだけじゃなく、マネジメントとかも書いていきたい!

【PHP】相対パスでincludeした後のファイルで、さらにincludeすると読み込めない【194日目】

こんなファイル作りました

public/index.php

include ../xxx/yyy/temp.php

xxx/yyy/temp.php

include ../../zzz/item.php

zzz/item.php

echo 'hello';

これ、動かないです。

どこが問題か

xxx/yyy/temp.php

include ../../zzz/item.php

これ。単体で見たら問題なさそう。
でも、このファイルをincludeすると話は別。

includeは、ファイルの中身を、自分にコピーするイメージ

includeはファイルの中身をコピーするイメージ。

だから、最初のincludeでこんな風になる。

public/index.php

// include ../xxx/yyy/temp.phpで呼び出した
include ../../zzz/item.php

そう、public/index.phpから相対パス../../zzz/item.phpを呼び出してしまうのだ。

だから、publicより下のディレクトリを読み出そうとするし、目的のディレクトリなんて存在しない。

反省

ということで、ファイルをincludeするなら、基本的に絶対パス使おう。