CoreServer で PHP CGIモード(セーフモード:オフ)

セーフモードの回避策で、

AddHandler application/x-httpd-phpcgi .php

とするのだが、CGI版のPHPを動かすということである。
しかし、CGIのPHPでも問題がある。

HTTPのレスポンスヘッダーが常に Content-Type: text/html としてしまう。

CGIのPHPでFireFoxを使って管理画面が崩れてしまうのは、このせいである。
この回避策として、load-styles.phpのみをモジュール版に戻すという手段もあるが、他の手段としてphp.ini を各ディレクトリに設置するということをする。記述は下記の通り。

cgi.nph = 1
default_mimetype =

default_charset =

しかし、次の条件の時はまだ足らない、

  • セーフモード:オフでないとならない場合。かつ、
  • レスポンスヘッダーがPHPで設定したContent-Typeでならないとき。かつ
  • レスポンスヘッダーがStatus:304でならないとき。

このとき、なにが足らないかというとStatusが常に200となってしまう。
一応回避策はあって、

  • 先頭行に、#!/usr/local/bin/php -q とする。
  • アクセス権を755とする。
  • .htaaccess でなどで該当ファイルを
    AddHandler cgi-script .php とする。

でも、この方法は面倒だなぁ。