PHP realpath() でハマり道

お客様ご指定の環境 Apache2.4 + PHP8.0.14 にて realpath() 挙動の沼にハマったのでご紹介。

Apache 経由でのリクエストにおいて、実在するパスを realpath(“/var/tmp/hoge”) とすると、空文字が帰ってくる。

CLI では問題ない。。。

どうやら realpath() はキャッシュを持つ様で、Apache との組み合わせでは解決するのは、特にシンボリックリンクが絡むと結構面倒らしい。。

今回はシンボリックリンクは絡んでいないにも関わらず、Apache を再起動してもマシン本体を再起動しても治らないので、/var/tmp2/hoge とすることで回避した。後味が悪い。。。