XREA/CORESERVER でPHP CGIモードでヘッダーが正しく出力されない

coreserverにて、PHPを.htaccessで"AddHandler application/x-httpd-phpcgi .php"としてCGI版PHPで動かすと自動的に content-type text/html が出力されてしまう。
強制的に text/html でヘッダを返すため、場合によっては不具合が発生することがある。
・対策方法1
.htaccessで以下の設定を行う

AddHandler application/x-httpd-phpcgi .php
RemoveHandler .php

・対策方法2
拡張子を.phpから.cgiに変更して一行目に"#!/usr/local/bin/php -q"を追加
CGI版ではなくCLI版で動かして出力結果を得る。
■CGI版PHP の問題点
・PHP を CGI モードで動作させた場合の問題点として、正しい HTTP レスポンスヘッダを返さないことがある(自動的にヘッダが出力されるため)。
対策方法まとめ:
CLI版を使うか、ApacheのRemoveHandlerを利用する。Apache - RemoveHandler ディレクティブ

RemoveHandler ディレクティブ は与えられた拡張子に関連付けられたハンドラを取り消します。 これにより、サブディレクトリにある .htaccess ファイルが親ディレクトリやサーバの設定ファイル から継承した関連付けを取り消すことができます

■参考リンク
Apache - RemoveHandler ディレクティブ
PHP CGI版を使うと、Content-type が text/html で上書きされる
PHP をコマンドラインから使用する
PHP CLI/CGI SAPI

25. 1月 2010 von memo-log
カテゴリ: プログラミング |

コメント

コメント投稿

Required fields are marked *