PHPでデプロイ時にも削除されないように /tmp
にキャッシュファイルを作成したが、ファイルが存在するのにfile_exists()
が false
になったり、PHPからプロセス起動しての ls
コマンド実行でも "No such file or directory" になり、ドハマリした。
ファイルの存在はもちろんファイル権限や状態など確認しまくっても、既存のファイルとPHP内で取得してきたファイルに全く違いがない。謎すぎた。
PHPのプロセスごとにバーチャル /tmp
が使用されているのが原因だった。。。
知っていればなんてこと無かったことだが、数時間を無駄にしてしまった。
追記:
そもそも、/tmp
ではなく、キャッシュならば/var/cache
を使用すべきか。
Linuxディストリビューションによっても異なるが、例えばCentOS7では/tmp
の内容はシステム再起動時や一定期間後に削除されるので、一時的な作業中・処理中にしか使用しないものをちょっと置いておくだけの場所としてのみ使うべきということか。