これはVagrantのsendfileという機能がキャッシュを送信してしまうため発生する。
sendfileを無効化するには、Webサーバーの設定ファイルを変更しなければならない。
当方のApache設定ファイルは次の場所に格納されていた。
/etc/httpd/conf/httpd.conf
そして次の記述を追加
EnableSendfile off上書き保存後にWebサーバーを再起動
以上
/etc/httpd/conf/httpd.conf
EnableSendfile off上書き保存後にWebサーバーを再起動
// ファイル書き込み $testFile = "test.dat"; $contents = "Hello World! \n"; if (is_writable($testFile)) { // ファイルオープン if (!$fp = fopen($testFile, "a")) { echo "could not open!"; exit; } // 書き込み if (fwrite($fp, $contents) === false) { // "===" 厳密な"==" echo "could nor write!"; exit; } echo "success!"; fclose($fp); } else { echo "not writable!"; exit; }
not writable!
ls -lというコマンドを発見。
①[ - ] ②[ r w - ] ③[ r w - ] ④[ r - - ]という4パーツに分けられる。
①[ - ] 対象がファイル("-")かディレクトリ("d")か今回はWebブラウザから、つまり外部からのアクセスなので④が関係していると思われる。
②[ r w - ] オーナー権限
③[ r w - ] グループ権限
④[ r - - ] その他ユーザー権限
r:readable 読み込み可能このことから test.dat には外部ユーザーから書き込み権限がないことが分かる。
w:writable 書き込み可能
x:executable(?) 実行可能
-:該当の権限を持たない
chmod [変更後の権限状態] [変更対象のファイル名]変更後の権限状態は②〜④の権限状態をそれぞれ2進数から8進数に直した値を設定する。
②:[ r w - ] → [ 1 1 0 ](2進数) → [ 6 ](8進数)
③:[ r w - ] → [ 1 1 0 ](2進数) → [ 6 ](8進数)
④:[ r w - ] → [ 1 1 0 ](2進数) → [ 6 ](8進数)
→ [変更後の権限状態]:666
権限変更が反映されたことを確認。
success!
書き込みが追加されている。
writable 書き込み可能という言葉を見ると、書き込み命令を出す側(今回はPHP)が他のファイルに対して書き込むことができるという印象を受けた。