ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

さくらインターネットコミュの[質問] /~XXX/ 以下のディレクトリでCGI・PHPが動作しない

  • mixiチェック
  • このエントリーをはてなブックマークに追加
こんにちは&はじめまして。
こちらでは初めて質問させて頂きますが、よろしくお願いいたしますm(_ _)m

現在、レンタル鯖(スタンダードプラン)+独自ドメインで自前サイトを作成しています。
今まで問題なく動作していた CGI と PHP スクリプトがあるのですが、
格納しているディレクトリ名を変更したところ動作しなくなりました。
具体的にはディレクトリ名を ~XXX の形式の名前に変更すると
どんなスクリプトでも Internal Server Error となってしまうのです。

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

・test.cgi
#!/usr/bin/perl
print "Content-type: text/html\n\nHello, World.\n";

・test.php
<?php echo "Hello, World\n"; ?>

・ディレクトリ構成
/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"と出力するだけのスクリプトが動作しなくなります。
また、ブラウザからの確認は
   http://myname.sakura.ne.jp/~test/test.cgi
   http://www.myname.com/~test/test.cgi
いずれの場合でも同じとなりました。



http://sakura.ne.jp/support/manual/rs/tech_cgi.shtml
にある CGI の仕様を見る限りでは、特に .htaccess を記述せずとも
任意のディレクトリでスクリプト動作ができるとあります。
また ~XXX 形式のディレクトリでの制限については特に書かれていません。

確かに ~XXX のディレクトリ名は一般的な Web サーバでは
ユーザのホームディレクトリとして扱われることがある特殊エイリアスですが、
レンタルサーバーの共通設定で何らかの設定が既にされている影響かもしれません。

この問題は .htaccess を自前で用意すれば解決する問題なのでしょうか?

Web サーバや .htaccess についてはきっちり理解しきれていませんが
何か解決のヒントを頂けると幸いです。よろしくお願いいたします。

コメント(3)

こんにちは。

この件につきまして別の発見(?)がありましたので報告させて頂きます。

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

相変わらず真相は謎のままですが、もしかするとこれと関係あるのかもしれません…
連続投稿です。

…で、結局 ~XXX のディレクトリ名でのアクセスは mod_rewrite を使って
   http://www.myname.com/~XXX/...

   /home/myname/www/~XXX/... ではなく
   /home/myname/www/user/XXX/...
にリダイレクトすることで対応することにしました。
URL のディレクトリ構成とドキュメントルート以下のそれを
可能であれば同じにしたかったのですが
先ほどのシェルのエイリアスが何かキモチワルイので諦めることにしました。

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

   RewriteEngine On
   RewriteRule ^~([^/]+)/?(.*) /user/$1/$2

今のところ ~XXX で示される URL 以下でも CGI・PHPともに動作しているようです。

一応、目指すところには落ち着いたっぽいので、目出度く解決ということで m(_ _)m
お騒がせしました。
続きます(汗

今回、mod_rewrite で対応するため .htaccess を作成しましたが、
さくらのレンタルサーバでは少し挙動が違うようでした。
# 気が付くのに 1 時間無駄に orz

例えば、次の指示は動作しません。
   RewriteRule ^/from\.html$ /to.html
http://myname.com/from.html にアクセスがあると
自動的に to.html に飛ばせたいのですが、条件にマッチしてくれません。
今回参考にした
   http://japache.infoscience.co.jp/rewriteguide/
でも同じように書いてありますし、Internal Server Error も出ていません。

さくらのレンタルサーバでは、どうやらこれを
   RewriteRule ^from\.html$ /to.html
と書かないとダメらしく、
mon_rewrite にはファイルパス先頭の / が付いてこないようなんですね…

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

さくらインターネット 更新情報

さくらインターネットのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング