発生した問題
パーミッションは 777 なのに、 /tmp 以下に書き込んだファイルが見当たらない。
file_put_contents()
の返り値は false でなく数値であり、エラーは発生していないように見える。
解決方法
結果として、 systemd-private 以下のディレクトリに保存されていた。
[vagrant@localhost ~]$ ls -l /tmp/
total 160
drwxrwxrwx. 3 root root 17 Jul 8 01:25 systemd-private-2b77b18c2f424fe7afeecfea34d56ab2-chrony
d.service-iIjYVL
drwxrwxrwx. 3 root root 17 Jul 8 01:32 systemd-private-2b77b18c2f424fe7afeecfea34d56ab2-httpd.
service-ZR83lg
drwx------ 3 root root 17 Jul 11 05:12 systemd-private-646261b943474726b11dec82b8a10c44-chrony
d.service-10BqpD
drwx------ 3 root root 17 Jul 11 05:12 systemd-private-646261b943474726b11dec82b8a10c44-httpd.
service-j3gQ6f
-rwxrwxrwx. 1 vagrant vagrant 112 Jul 8 01:27 vagrant-shell
-rwxrwxrwx. 1 root root 156589 Jul 8 01:33 x-mon_install_log.txt
[vagrant@localhost ~]$ ls -ld /tmp/
drwxrwxrwt. 11 root root 4096 Jul 11 06:08 /tmp/
[vagrant@localhost ~]$ sudo ls -l /tmp/systemd-private-2b77b18c2f424fe7afeecfea34d56ab2-httpd.service-ZR8
3lg/tmp/
total 8
-rwxrwxrwx. 1 apache apache 1037 Jul 8 09:05 output2.json
-rwxrwxrwx. 1 apache apache 1006 Jul 8 09:05 output.json
作成した output.json は phpunit からコマンドライン経由で呼び出して利用したかったのだが、 /tmp/output.json のパスではアクセスできなかった。
/opt/ 等に適当なディレクトリを作り、そちらに保存することによって解決した。
解説
php - Why can't write info into /tmp directory instead of /var/www/html? - Stack Overflow
systemd が、apache プロセスが利用する用にディレクトリを作成してくれているらしい。