こんにちわ、掲示板の皆様
SSiについてご指導願いたく書き込み致します。
当方の環境は以下の通りです。
W2KS,Apache HTTP Server 2.0.53,Active Perl 5.8.8 Build 817
SSiを使用したいと思い設定しましたが、下記の様なエラーになります。
「an error occurred while processing this directive」これは
cgiを起動しています。
他のSSIは正常に動いてますが、cgiを起動しているのだけがエラーとなります。
当方、長い間SSIが使えないサバーの為に全くの素人です。
今、資料を集めていろいろと試行錯誤していのすが同じ現象が続いてます。
良い案が御座いましたら、ご指導お願い致します。
宜しくお願い致します。
> SSiについてご指導願いたく書き込み致します。
> 当方の環境は以下の通りです。
> W2KS,Apache HTTP Server 2.0.53,Active Perl 5.8.8 Build 817
> SSiを使用したいと思い設定しましたが、下記の様なエラーになります。
> 「an error occurred while processing this directive」これは
> cgiを起動しています。
> 他のSSIは正常に動いてますが、cgiを起動しているのだけがエラーとなります。
Apacheのエラーログは見たのですか? line xx でエラー発生と出ているはずなので何をしたときエラーになるかを抑えなければ現象だけ見ていても解決できません。
全てはログからスタートです。
単に、http://www.kes-net.com/~fc/ 配下でOptions でIncludesが有効になっていないだけのような気もしますが?
kentさん。BBSスパムロックにヒットしているようです。おやじにメールをくれれば、注意事項をお知らせします。
> エラーログの中身は下記の通りです。
> exec used but not allowed in user/fc/public_html/index.shtml
> 下記の様に設定しています。
> AddType text/html .shtml
> AddOutputFilter INCLUDES .shtml
> で良いと思うのですが。間違えているのでしょうか?
エラーログは、前レスで指摘したとおりの結果がでてますね。
このエラーでは、exec要素を使っているがuser/fc/public_html/index.shtmlでは許可されていないと言ってますよね。恐らく、UserDir用のDirectoryディレクティブでOptionsの設定がデフォルトの「Options IncludesNoExec」になっているからではないですか?
例ですが、下記のように「Includes」にしてあげれば動きますが、execを許容するということは、例えば、この配下にBBSを設置してタグを許可したりしたら外部からどんなコマンドでも実行できてしまうという大きなリスクがあることを忘れないでください。
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options Includes ExecCGI
</Directory>
因みに、Apacheはドキュメントを見ればほとんどのことは書いてあります。
http://httpd.apache.org/docs/2.0/ja/howto/ssi.html
更に言えば、こういう場合はエラーログをそのまま(固有部分は除く)貼り付けてググレばほとんど答えが見つかります。
kentさん。dionのメールサーバからUser unknownでメールが帰ってきます。メアドはあってますか?
後、カキコされようとしている内容だけでは原因はわかりません。単にCGIを動かしているだけですよね。どのCGI(バージョン)をどう設定していているのか?
「Use of uninitialized value in string eq at D:/〜/report.cgi line 122.\r
Name "main::ip_chk" used only once: possible typo at D:/〜/report.cgi line 141.\r
Name "main::max" used only once: possible typo at D:/〜/report.cgi line 156.\r
Use of uninitialized value in string eq at D:/〜/report.cgi line 122.\r
Use of uninitialized value in concatenation (.) or string at D:/〜/report.cgi line 162, line 30.\r」
KentWebさんのCGIなら問題ありません。エラーはでるもののうまく動いているのですよね。エラーの中から固有名詞を外した部分だけでググレば上記エラーの内容はわかるはずです。
エラーがウザいでしょうから、各CGIの行頭に-wオプションをつけているはずなのでこれを外せば消えるはずです。
こんばんわ。パソコンおやじさん。
> エラーがウザいでしょうから、各CGIの行頭に-wオプションをつけているはずなのでこれを外せば消えるはずです。
無事エラーがなくなりました。
どうも有り難う御座いました。
こんばんわ。パソコンおやじさん。
SSIを記述している所が文字化けしています。
サイトを開くと文字化けしています。
「<!--#exec cgi="./report/report.cgi" -->」がこれに
「GIF89a!・,郡」になっています。
サーバーにFTP転送後サイトを開いて右クリックでソースの表示で
文字化けしています。
それでSSIは無事に起動しています。
転送方法もいろいろと試しましたが直りません。
サーバーの設定か何かでおかしくなったのかと思ってhttpdファイルを
見て試行錯誤しています。
何かお気づきな箇所がありましたら、ご指導お願い致します。
> こんばんわ。パソコンおやじさん。
> SSIを記述している所が文字化けしています。
> サイトを開くと文字化けしています。
> 「<!--#exec cgi="./report/report.cgi" -->」がこれに
> 「GIF89a!・,郡」になっています。
> サーバーにFTP転送後サイトを開いて右クリックでソースの表示で
> 文字化けしています。
> それでSSIは無事に起動しています。
> 転送方法もいろいろと試しましたが直りません。
> サーバーの設定か何かでおかしくなったのかと思ってhttpdファイルを
> 見て試行錯誤しています。
まずは、KentWebのCGIの使い方が間違っていますので、SSI以前にもう少しCGIそのものの勉強が必要では?
後、SSIでreport.cgiを呼び出そうとしていうことから、SSIの使い方も勘違いしているとしか思えません。こちらもよく調べて勉強が必要では?
そこで、心配なのがこの状態でセキュリティ上、本当にIncludesして良いのかです。失礼ながらとても管理できるように思えないのでexecを許容するのは非常に危険かと思いますが・・・。
おやじなら今でも絶対にしませんが・・・。
こんにちは、パソコンおやじ さん
ご指導う有り難う御座いました。
> まずは、KentWebのCGIの使い方が間違っていますので、SSI以前にもう少しCGIそのものの勉強が必要では?
> 後、SSIでreport.cgiを呼び出そうとしていうことから、SSIの使い方も勘違いしているとしか思えません。こちらもよく調べて勉強が必要では?
> そこで、心配なのがこの状態でセキュリティ上、本当にIncludesして良いのかです。失礼ながらとても管理できるように思えないのでexecを許容するのは非常に危険かと思いますが・・・。
> おやじなら今でも絶対にしませんが・・・。
KentWebさんの指定通りにしています。
KentWebさんからの引用です。
「【CGI + SSIモードの記述例】 → $ssi = 1; のとき
report.cgiは、アクセス状態で集計するcgiです。
<!--#exec cgi="./report/report.cgi"-->」
と、言う記述になっています。
「【CGI + SSIモードの記述例】 → $ssi = 1;
上記の通りに設定しないとCGI + JavaScriptモードの基本的な記述例】
→ $ssi = 0; のときは、JavaScript非対応(携帯電話)の集計が
出来ないためです。
現在、お問い合わせしていたエラーは直しました。
と、SSIにてexecの使用は検討致します。
ただ単にアクセス状態を知るならばアパッチのアクセスログを見たら
良いわけですね。
いろいろとご指導有り難う御座いました。
> KentWebさんの指定通りにしています。
> KentWebさんからの引用です。
>
> 「【CGI + SSIモードの記述例】 → $ssi = 1; のとき
>
> report.cgiは、アクセス状態で集計するcgiです。
> <!--#exec cgi="./report/report.cgi"-->」
>
> と、言う記述になっています。
>
> 「【CGI + SSIモードの記述例】 → $ssi = 1;
> 上記の通りに設定しないとCGI + JavaScriptモードの基本的な記述例】
> → $ssi = 0; のときは、JavaScript非対応(携帯電話)の集計が
> 出来ないためです。
>
> 現在、お問い合わせしていたエラーは直しました。
> と、SSIにてexecの使用は検討致します。
> ただ単にアクセス状態を知るならばアパッチのアクセスログを見たら
> 良いわけですね。
大変失礼をしました。時代は変わっていてv4.0ではinit.cgiなんてあるんですね。完全に先入観から見落とししてました。先のエラーは単に$ssi=1にしてなかっただけ、即ちおやじのWindows環境と同じだっただけで、これは解決したということですね。
Apacheを使っているならWindowsでも使える解析ツールとして、おやじも使っているWebalizerやAWstatsが使え、はるかにたくさんの情報が得られます。 ただ、周期的な起動等がWindowsだと少し厄介かな?と思いますができます。
http://www.aconus.com/~oyaji/suse/webalizer_suse.htm