file_put_contentsで作ったファイルにアクセスできない。

私の場合のケースをメモする。

ドキュメントルートに.htaccessを以下の記述で置いた。

#PHPコードをhtml拡張子で実行可能にする
AddType application/x-httpd-php .html

この設定をするのは、例えば、以下の理由。

  • MovableTypeを、PHPで操作する時。
  • わざわざ、スクリプトの種類を教えてあげたくない時。

これも、みんながやっていると思う。でも、ルートにおいてやるべきことではなかった。

以下のようなPHPスクリプトを書く。


その上で、test.htmlにアクセスすると。


Warning: Unknown: SAFE MODE Restriction in effect.
The script whose gid is 1000 is not allowed to access
/virtual/.../public_html/index.html
owned by uid 1000 in Unknown on line 0

というエラーが出た。
AddType application/x-httpd-php .html をエスケープすれば、エラーなく閲覧できる



最近は、blogをインストールすると、大抵、mod_rewrite 使っていたり、ディレクトリをプログラムで作る為に、CGIで動作させるような必要性に駆られることも少なくない。

Unknown on line 0 だと、原因にたどり着くまで、結構辛い。

phpでパースするようにしたhtmlファイルの設定を戻す。

設定の方法は、いろいろな説明があるんだけれど、設定したものを、戻すとかリセットするとかの説明は、とても見つけにくい。

AddType application/x-httpd-php .html をルートで設定すると、下位のhtmlはすべて、phpでパースされる。

どうする。
見つかった方法

  • php_flag engine off 指定ディレクトリでのphpのパースをやめさせる。

 (一旦offで次行にonで、htaccessの設定が初期化するなんて事は ない 様子)

  • AddType text/html html で、元に戻す。

(AddType application/x-httpd-php .phpではうまくいかない。)
php_flag_engine offにしてから、エスケープ addtype追記しないとうまく行かないのはどうしてだろう。)

  • RemoveType application/x-httpd-php html

(このあたりが本当なのかな、、、、)

学んだ点

.htaccess便利。軽く考えていると、問題が出た時の、対処が辛い。500errorとか、Unknown on line 0とか、
劇的な対応なので、

手順みたいなものもある気配。どれが使えて、どれが使えないか、レンタルサーバも詳細な資料を提供してくれているわけでもなく、、、限定的に、限定的に心がけるつもり