- ベストアンサー
Apache2.0で「#exec」コマンドを許可したい
アクセスありがとうございます。 先日の私の質問 http://oshiete1.goo.ne.jp/kotaeru.php3?q=447488 は無事解決いたしました。 どのような原因だったのか知りたい方はその旨を、お書きください。 また今回も、よろしくお願いします。 CGIで簡単なアクセスカウンターを作成したのですが動作しません。 「index.html」の中に<!--#exec cmd="./counter.pl"-->のコマンドを記述しました。 「counter.pl」の内容は「counter.dat」にインクリメント後その結果を表示するというものです。 「Linux」のコマンドラインからの「counter.pl」のテストでは「syntax OK」でした。 またコマンドラインから「counter.pl」を実行すると実行回数分の数字が表示されます。 また「AddType text/x-server-parsed-html .html 」という内容の「.htaccess」ファイルを同じディレクトリ内に作成しました。 各ファイルのパーミッションは「index.html」と「.htaccess」が「rw-r--r--」で「counter.pl」が「rwxr-xr-x」で「counter.dat」が「rw-rw-rw-」です。 本来ならば、これでアクセスカウンターが作動するはずなのですが、なぜか動きません。 おそらく「httpd.conf」の内容を書き換えることにより動作するようになるのだと信じ、いろいろ変更してみましたが、うまくいかないので結局、今はデフォルト設定に戻しました。 また、このスクリプトは学校のサーバに置いた場合は問題なく動作します。 そこで学校の「httpd.conf」を、そのまま自宅サーバに適用したりもしましたが「Apache」のバージョンの違いか、またはその他の原因か「httpd」が起動しませんでした。 しかし、このファイル以外に原因は考えられません。 おそらくアクセスカウンターを動かすには「httpd.conf」の色々な箇所を変更する必要があるのだと思っているのですが、いったい、どこと、どこと、どこと、どこを、どのように書き換えればいいのですか。
お礼
夜の個別指導ありがとうございます。 ちょこっとhttpd.confのコメントを読みながら、ちょこっと編集して、あっけなくアクセスカウンタを動かしてしまわれるとは。 まさか!!皆さん米国の方ですか!?(笑) 私も、その読解力が欲しい!! さて結果から、ご報告しますと残念ながら、まだ成功していません。 お教えいただいた設定項目(1)(2)(3)(4)について (1)は各ユーザのホームディレクトリ下の「public_html」ディレクトリ内で「CGI」と「SSI」を許可する設定。 (2)はWebサーバにアクセスしたときの文字コードをクライアント側に合わせる設定。 (3)はCGIスクリプトの拡張子を「.cgi」に統一する設定。 (4)は「SSI」を埋め込むファイルの拡張子を「.html」に統一する設定。 で正解でしょうか。 (1)(2)(3)(4)全てを適用しましたがスクリプトは動きませんでした。 「あなたは 番目のお客様です。」となってしまいます。 またこの設定により「.shtml」の拡張子を持つファイルで「SSI」が利用できなくなりました。 しかし、これについては AddOutputFilter INCLUDES .html .shtml という風に設定項目に「.shtml」を追加したら回復しました。 またAddDefaultCharset Offの項目については #AddDefaultCharset Offのようにコメントアウトせずに「Off」と設定すると、どのような違いがあるのでしょうか。 また今までは<Directory /home/*/public_html>項目のOptionsにIncludesNoExecが設定されていたので「#exec」コマンドが使えないと思っていたのですが今回「IncludesNoExec」を「Includes」に書き換えたにもかかわらず、うまくいかないと言うことは、この他にもさらに何らかの原因があるということなのでしょうか。 個人的には「#exec」コマンドの引数「cmd」や「cgi」に、それぞれ別々の許可設定がなされているのではとも予想しているのですが、さすがにそこまで細かい設定項目はないのでしょうか。 うーん、しかしCGIはソースを完璧に記述したとしてもサーバの設定の影響などにより実行できないことが多々あるのでC言語実習のころよりもイライラすることが多くなったような気がします。 お手数ですが他にも何か解決策がありましたら、どうぞ教えてください。