エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

【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するなら、基本的に絶対パス使おう。