install.cgiにアクセスするとソースがそのまま表示される(カゴヤVPS)
ミルキーステップ様。いつもお世話になっております。
クラウドVPSにてFTPサーバーを利用してミルキーステップの設置を試みています。
カゴヤのサポートに聞いたところサポート対象外と返され、こちらで質問させて頂いた次第です。
FTP、web、PHP、Apache、perl、MySQL、crontabなどは最新バージョンがインストール済で動作確認済です、
●【KAGOYAのサポートページを参考に試したこと】
KAGOYAの以下のサイトの手順にそって
カゴヤのサイトのCGIの設定方法を参考に
http://support.kagoya.jp/manual/cgi/cgi.html
FileZillaでアップロードし、TeraTermから操作しています。
しかし
http://(カゴヤのURLドメイン)/ms/install.cgi
で実行しても、「ブラウザにCGIファイルのソースのみが表示」されてしまいます。
/home/アカウント/public_html 以下にCGIファイルを設置し、
「テキストモード(アスキーモード)」でミルキーステップのファイル類をアップロードしました。
それをちなみに一度削除して、「バイナリモード」や「自動」でのアップロードも試しましたが変化ありませんでした。
Perlは設定通り
#!/usr/bin/perl
に合わせてあります。
CGI側の設定も同じです。
cgiのパーミッションは755です。
マニュアルには700推奨とありましたが、suexec下なのでパーミッションが変わるのでフォルダからCIGファイルまで755ですべて設定しました。
(マニュアルには755や705では動作しない場合もあるとのことですが・・・)
suexecの以下↓も試して
Forbiddenが表示される
中身(ソース)が表示される
http://www.cside.jp/SP_pri/cgi/trouble/tro01.html
public_html下であること、フォルダ名がcgiやcgi-binなどで専門フォルダと重複してないこと、なども確認済みです。
ファイルの文字コードは「utf8」です。
vi /etc/httpd/conf/httpd.conf
/etc/rc.d/init.d/httpd restart
でhttpdの再起動によるApacheの再起動
chkconfig httpd on
まで組み合わせて行いましたが、CGIのソースがそのままブラウザに表示されて
しまうだけです。
パーミッションを755から変更して
700だとソースがそのまま表示
705だと「403 Forbidden」でした。
●【その他のサイトを参考に試したこと】
同じような事例が以下のサイトにあったので、
CGIを表示するとソースがそのまま表示される
http://centossrv.com/bbshtml/webpatio/2496.shtml
それにそってhttpd.confに
Options Includes ExecCGI FollowSymLinks
AllowOverride All
AddHandler cgi-script .cgi .pl
を書き加えてみたのですが、Internal Server Errorになってしまいました。
(もちろんその後、httpdの再起動によるApacheの再起動しています)
そもそも
AddHandler cgi-script .cgiを有効にすると「403 Forbidden」になってしまいます。
(ソースが表示されることはなくなりますが・・)
パーミッションを777などに変えてみてもダメでした。
さくらサーバー共有では動作して使えているのですが・・・。
さくらサーバーと同じような状況の場合.htaccessの最初のOptions -Indexes +ExecCGIに#を入れ
て再アップロードすると使えることもあるので、試してみたのですが、
やはりソースが表示されるだけで変化はありませんでした。
(もちろんその後、httpdの再起動によるApacheの再起動しています)
(参考サイト)
http://milkystep.com/ms_poc/?p=2516
その他、設定等は説明書通りで問題ないはずなので、おそらくhttpd.confの問題
か、CGIのパーミッションの問題かと思うのですが・・
もちろん:w、:qで更新保存するなど変更ごとに細かく確認しています。
まとまりのない文章で恐縮ですが、教えていただけたら幸いに存じ上げます。
平素はMilkyStepをご利用いただきありがとうございます。
suexecは、決められたユーザが所有する特定のCGI以外を実行できないようにする、WEBサーバ(apache)の機能です。
Forbiddenになる場合は、まず最初にsuexecのログをご確認ください。
たいていの場合、ログのパスは「/var/log/httpd/suexec.log」になります。
suexecを利用する場合は、たいていWEBサーバの設定ファイル(httpd.confなど)に、
「SuexecUserGroup “グループ名” “ユーザ名”」「SuexecUserGroup “ユーザ名” “グループ名”」
の記述があるはずです。
一般的には、ドキュメントルートのディレクトリ、CGIを設置しているディレクトリ、そのサブディレクトリ、中身のCGIファイルが、すべて上記のユーザの所有になっている必要があります。
VPSの場合は、上記に記述されているユーザ名がデフォルトで他のものになっていたり、もともとあるディレクトリの所有者がデフォルトで他のユーザになっている場合もありますので、上記設定ファイルの記述、およびそれぞれのディレクトリ・CGIファイルの所有者を確認してください。
ご参考)
http://server-setting.info/centos/apache_suexec_php.html
なおsuexecを適切に管理できない可能性がある場合や、VPSをレンタルサーバとして第三者に提供しない場合などは、suexecを機能させることにあまりメリットは無く、その他の大きな問題が発生(今回のようにCGIが動かない、など)することがありますので、suexec自体を無効にしていただくことをお勧めします。
ご参考)
「SuexecUserGroup “ユーザ名” “グループ名”」の行をコメントアウトしてWEBサーバ再起動
または
http://blog.netandfield.com/shar/2008/08/suexec.html
なお質問時は、極力雛型に沿った形でご投稿いただきますようお願いいたします。
アドバイスありがとうございます!
数ヶ月の試行錯誤の結果、以下のページで紹介されていたパーティションなどを書き換える方法で解決しました。
(参考)
kgoya VPSでCGIがソースのみ表示されるだけ対処法:ネット衆善奉行
http://p2pzen.com/vps/kgoya-vps-cgi-error/
kagoya VPSでのモジュール類インストールまとめ
http://p2pzen.com/vps/kagoya-vps-module/
重ねますがありがとうございます。
tokyenea 様
このたびは詳細なご報告をありがとうございました。
引き続きMilkyStepをよろしくお願い申し上げます。