こんなファイル作りました
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するなら、基本的に絶対パス使おう。