« hack-a-thonに行って来ました。 | Home | Action Streams! »

February 1, 2008

[error] mod_mime_magic: can't read `***.cgi' は多分無視して構わない気がします。

mod_mime_magicというのは、ファイルの拡張子に頼らずにMIMEタイプを推測するApacheモジュール。
Apacheは通常、拡張子を見て「.mp3」なら「audio/mpeg」です、というようにファイルの種類(MIMEタイプ)を返している。だがmod_mime_magicを利用すると、実際のファイルを読み取って、たとえば先頭のnバイトが特定のパターンになっていたら、これはmp3に違いない、と判断して自動的に「audio/mpeg」を返してくれるようになる。たとえばXMLの場合、ファイルの先頭からの文字列が「<?xml」なら「text/xml」を返却する、という具合。以下、実際のmod_mime_magicの設定ファイルの一部。

0 string \<?xml text/xml

こんな感じでいろんなファイルの種類が指定してあるので、いちいち拡張子ごとの設定を行ったりしなくても済むようになって便利だよね、というモジュールです。

さて。suExec環境でCGI を設置したときに、「mod_mime_magic: can't read `***.cgi'」というエラーがエラーログに山ほど残る場合がある。これはmod_mime_magicが、MIMEタイプ推測の際のファイルの読み取りに失敗した場合に出るらしい。

suExec 環境下では、CGI の実行自体はファイルのオーナーとして行われるため、オーナーの権限が設定されていればOK。0700、なんてパーミッションでもきちんと動作する。
しかし、mod_mime_magic がファイルを読みに来るときには、Apache ユーザーで読みに来てしまうため、ここでワールドのパーミッションが必要となってしまう。お馬鹿。

で、まあ、エラーログに「mod_mime_magic: can't read `***.cgi'」がたくさん出てウザイという場合は、cgiファイルのパーミッションを0704とかにしてみるととりあえず回避できると思います。

また、メッセージ自体は単に「MIMEタイプの推測に失敗した」と言う警告なだけで、実際のCGIの実行には問題が無いので、そのまま放置しても構わないはず。(CGI側できちんとMIMEtypeをヘッダに含めて返しているはずなので。)

一番良いのはmod_mime_magicを使わない、かな。

No TrackBacks

TrackBack URL: http://aklaswad.com/cgi-bin/mt/mt-tb.cgi/215

Leave a comment

OpenID accepted here Learn more about OpenID

About this Entry

This page contains a single entry by aklaswad published on February 1, 2008 11:46 AM.

hack-a-thonに行って来ました。 was the previous entry in this blog.

Action Streams! is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.