桜鯖で ~XXX 階層下の CGI/PHP が動作しない

Posted by
ぴろり
Posted at
2005/05/24 11:41
Trackbacks
関連記事 (0)
Post Comment
コメントできます
Category
電算室
 このサイトは  さくらインターネットのレンタルサーバ に独自ドメインで運営しています。 ここで今まで問題なく動作していた スクリプトがあるのですが、 格納しているディレクトリ名を変更したところ動作しなくなるという不具合がありました。 具体的にはディレクトリ名を ‾XXX の形式の名前に変更すると、 どんなスクリプトでも Internal Server Error となってしまうというものです。
この記事をはてなブックマークに追加する この記事のはてなブックマーク数 | この記事をlivedoorクリップに追加する この記事のlivedoorクリップ数 | この記事をYahooブックマークに追加する この記事のYahoo!ブックマーク数 | この記事をdel.icio.usに追加する
結局 ‾XXX のディレクトリ名でのアクセスは mod_rewrite を使って
http://www.myname.com/‾XXX/...
/home/myname/www/user/XXX/...
にリダイレクトすることで対応することにしました。 URL のディレクトリ構成とドキュメントルート以下のそれを 可能であれば同じにしたかったのですが、 シェルのエイリアス(後述)が何かキモチワルイので諦めることにしました。

設置した .htaccess の内容は次の通りです。

今のところ ‾XXX で示される URL 以下でも ともに動作しているようです。 一応、目指すところには落ち着いたっぽいので、目出度く解決ということで m(_ _)m


'05/04/24 現象

【手順1】
 先ず以下のようなスクリプトを作成し、以下のディレクトリ構成で パーミッションを設定した上で で動作を確認します。

/home/myname/www/test/test.html … OK
/home/myname/www/test/test.cgi … OK 正常動作
/home/myname/www/test/test.php … OK 正常動作
/home/myname/www/test/cgi-bin/test.cgi … OK 正常動作
/home/myname/www/test/cgi-bin/test.php … OK 正常動作

【手順2】
 次に"test"ディレクトリの名前を"‾test"に変更します。他の操作は一切しません。

/home/myname/www/‾test/test.html … OK
/home/myname/www/‾test/test.cgi … Internal Server Error
/home/myname/www/‾test/test.php … Internal Server Error
/home/myname/www/‾test/cgi-bin/test.cgi … Internal Server Error
/home/myname/www/‾test/cgi-bin/test.php … Internal Server Error

 このように単に"Hello, World"と出力するだけのスクリプトが動作しなくなります。

 サーバの仕様 にある の仕様を見る限りでは、特に .htaccess を記述せずとも 任意のディレクトリでスクリプト動作ができるとあります。 また ‾XXX 形式のディレクトリでの制限については特に書かれていません。
 確かに ‾XXX のディレクトリ名は一般的な サーバでは ユーザのホームディレクトリとして扱われることがある特殊エイリアスですが、 レンタルの共通設定で何らかの設定が既にされている影響かもしれません。

'05/05/24 補追 1

 サーバに telnet ログインを行い、CWD が /home/myname/www の時に
cd ‾test
とコマンドタイプすると
Unknown user: test
と怒られてしまいました。
cd ./‾test
だと動作します。 今までは の FTP クライアントアプリでディレクトリ操作を行っていたため この現象に気が付きませんでしたが、 シェル上では各ユーザのホームディレクトリとして解釈されているようです。
 相変わらず真相は謎のままですが、もしかするとこれと関係あるのかもしれません…

'05/05/24 補追 2

 今回、mod_rewrite で対応するため .htaccess を作成しましたが、 さくらのレンタルサーバでは少し挙動が違うようでした。 例えば、次の指示は動作しません。
# 気が付くのに 1 時間無駄に orz
RewriteRule ^/from¥.html$ /to.html
http://myname.com/from.html にアクセスがあると 自動的に to.html に飛ばせたいのですが、条件にマッチしてくれません。 今回参考にしたガイド文書 でも同じように書いてありますし、Internal Server Error も出ていません。
 さくらのレンタルサーバでは、どうやらこれを
RewriteRule ^from¥.html$ /to.html
と書かないとダメらしく、 鯖では mon_rewrite にはファイルパス先頭の / が付いてこないようです。

参考


この記事を読んだ人はこんな記事も読んでいます ?

その他の関連する記事


関連記事/トラックバック

関連記事/トラックバックはまだありません

この記事のトラックバック URL

コメントを投稿する

 (必須/公開)
 (必須/非公開)
 

コメントスパム防止のため投稿前に ランダムな数字 ? を入力してから投稿してください。 お手数ですがご協力のほど宜しくお願いいたします。(必須)