こんばんわ。
RedHat7.2で、Perlで、CGIの勉強をしはじめましたが、 SSIが
どうもうまくいきません。
CGIならうまくいくのですが、HTMLからSSIでCGIを実行しようと
するとうまくいきません。
Apacheで練習しているのですが、Apacheの設定が悪いのか、ほかに
重大なミスをしてるのかわかりません。
HTMLの中に #exec cgi を入れてみたんですが、
ブラウザにはその部分が
[an error occurred while processing this directive]
と表示されるだけなんです。
ごくごく簡単なカウンターなんですが。。。
SSIにおいて、これだけは必ずしなければだめ、というのが
あれば教えていただきたいのですが。。。
よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

[an error occurred while processing this directive] は特定のエラーを示しているのではなく「何らかのエラーでSSIが実行不能」という意味です。


これだけの情報ではお答えすることは無理です。

・.htaccessの設定
・ssiファイル(perlの方)のパーミッション
・ログファイルの内容
・httpd.confの設定(SSIに直接関係するもの)

これらを見てエラーの原因を究明します。
    • good
    • 0

サーバはSSIが使用できるようになっていますよね?


では、SSIとみなされるファイルタイプは何でしょう?
質問を読んだかぎりでは、htmlファイルで実行させようとされているようですが、
一般的には(?)拡張子はshtmlです。
HTMLファイルで動作させようとすると、設定を変える必要があります。

html→shtmlにファイルタイプを変えられる時は、純粋に拡張子だけを変えればOKですよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QApacheの問題?HTMLかCGIの問題?Linuxの設定の問題?

お世話になります。
RedHat7.2でApache/1.3.27をインストールしています。
LAN経由でサーバーにアクセスすると、問題なく表示されるのですが、
外部からアクセスすると、アクセス出来る場合と、なぜか出来ない場合があります。
出来ない場合は、IEの右下の読み込み進度のバーがゆっくりと動いて、じきにDNSエラーになります。
Apacheのアクセスログには、正常に200を返してます。
また、proxy経由アクセスの場合、HTML(Apacheインストールテスト画面以外)が確実に見れません。CGIについては、print"";で記載されたcgiしか実行出来ません。(openなどの関数があると、動きません)
いずれの場合もLAN経由では正常に動作します。
バーチャルホストは設定してません。
ipchains -Lは、ACCEPT tcp -y---- anywhere anywhere any -> http
となってます。
DNSも正常に設定されています。
当方では何が原因かさっぱり分かりません。
どなたか宜しくお願いします。

お世話になります。
RedHat7.2でApache/1.3.27をインストールしています。
LAN経由でサーバーにアクセスすると、問題なく表示されるのですが、
外部からアクセスすると、アクセス出来る場合と、なぜか出来ない場合があります。
出来ない場合は、IEの右下の読み込み進度のバーがゆっくりと動いて、じきにDNSエラーになります。
Apacheのアクセスログには、正常に200を返してます。
また、proxy経由アクセスの場合、HTML(Apacheインストールテスト画面以外)が確実に見れません。CGIについては、print"";で記...続きを読む

Aベストアンサー

この手の「なったりならなかったり」って言うのが一番困りますよね(^^;
まあ、xjdさんのアドバイスのように、問題を小分けしていきましょう。

> 外部からアクセスすると、アクセス出来る場合と、なぜ
> か出来ない場合があります。

アクセスできなかったとき、IPアドレスを直で入力してもアクセスできませんか?
まずはこれから調べましょう

QApache2.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」の色々な箇所を変更する必要があるのだと思っているのですが、いったい、どこと、どこと、どこと、どこを、どのように書き換えればいいのですか。

アクセスありがとうございます。
先日の私の質問
http://oshiete1.goo.ne.jp/kotaeru.php3?q=447488
は無事解決いたしました。
どのような原因だったのか知りたい方はその旨を、お書きください。
また今回も、よろしくお願いします。
CGIで簡単なアクセスカウンターを作成したのですが動作しません。
「index.html」の中に<!--#exec cmd="./counter.pl"-->のコマンドを記述しました。
「counter.pl」の内容は「counter.dat」にインクリメント後その結果を表示するというものです。
「Linux」のコマンドラ...続きを読む

Aベストアンサー

こんばんは、夜の個別指導係2です。

RedHat8+Apache2でSSIを動かしてみました。

astronautさんが書かれているように、httpd.confのコメントを読みながら修正したら
あっけなくアクセスカウンタが動きました。
.htaccessは使っていません。

httpd.confで変更したところは以下のところ。

(1)
<Directory /home/*/public_html>
  .....
  Options ExecCGI Includes
  .....
</Directory>

(2)
AddDefaultCharset Off

(3)
AddHandler cgi-script .cgi

(4)
AddOutputFilter INCLUDES .html


そして
/home/hogehoge/public_htmlのindex.htmlの中は

<html>
<body>
 あなたは <!--#exec cmd="./counter.pl"--> 番目のお客様です。
 最終更新日:<!--#echo var="LAST_MODIFIED"-->
</body>
</html>

こんな感じでカウンタが実行できました。
ご参考まで。

-----------------------------------------------------------
counter.pl

#!/usr/bin/perl

$datafile = "counter.dat";

open(DATA, "$datafile");
$number = <DATA>;
close(DATA);

$number = $number + 1;

open(DATA, ">$datafile");
print DATA $number;
close(DATA);

print $number;

こんばんは、夜の個別指導係2です。

RedHat8+Apache2でSSIを動かしてみました。

astronautさんが書かれているように、httpd.confのコメントを読みながら修正したら
あっけなくアクセスカウンタが動きました。
.htaccessは使っていません。

httpd.confで変更したところは以下のところ。

(1)
<Directory /home/*/public_html>
  .....
  Options ExecCGI Includes
  .....
</Directory>

(2)
AddDefaultCharset Off

(3)
AddHandler cgi-script .cgi

(4)
AddOutputFi...続きを読む

Qredhat 7.0 でApacheでCGI

今、ApacheでWEBサーバーつくったのはいいでんすが、なぜかどのCGIも動きません。Internal Server Eroor がでます。
おそらくhttpd.confの設定だろうと思うのですが、どうやってもうまくいきません。
ちなみにCGIの中身はちゃんとチェック済みです(フリーのCGIスクリプトを3っつくらいためしました)あと、パーミッション設定もチェック済みで、テキストをただ表示させるだけのCGIすら動きません。
よければどなたかhttpd.confの中身のせときます。
どなたかアドバイスと、くわしくhttpd.confの設定がのってるサイトを教えていただけないでしょうか?
あと、できればWebminでの設定方法を知っている方おしえていただけないでしょうか?
http://ks-pro.dns2go.com/httpd.conf.txt

Aベストアンサー

apacheの開始/停止/再起動は/etc/rc.d/init.d/httpdを使います。
この辺は最低限含まれています。

んで、話を本題に戻して、以下のURLは読みました?
環境変数、.htaccessの編集(それに伴うhttpd.confの設定も含む)が必要そうです。
そんなに無理しなくても通常の使い方で良いのでは?
まず通常のインストールで動かす方が先のような気がします。

参考URL:http://www.webmin.com/webmin/apache.html

QLinux7.2のApacheのCGIについて

CGIを作成してアクセスしたところInternalServerErrorとなってしまいました
エラーログを参照したところ
Premature end of script headers; /home/tenchan/public_html/cgi-bin/test.cgi
となっていました。

原因がわからず困っておりますもしおわかりの方いらっしゃいましたら教えてください。

アパッチの設定は以下の点を修正しました

AddHandler cgi-script .cgiのコメントをはずしました

<Directory "/home/*/public_html/cgi-bin">
Options ExecCGI
</Directory>

test.cgiの内容は
#!/usr/bin/perl

print "Contetnt-type: text/html\n\n";
print "<HTML><BODY>Hello</BODY></HTML>";

です

コンソールで実行した際には「Hello」と表示されたので
test.cgiには問題はないと思います

また、Linux上で作成しましたので改行コードなどの問題はないと思うのですが
何か参考になるようなアドバイスありましたらよろしくお願いします。

CGIを作成してアクセスしたところInternalServerErrorとなってしまいました
エラーログを参照したところ
Premature end of script headers; /home/tenchan/public_html/cgi-bin/test.cgi
となっていました。

原因がわからず困っておりますもしおわかりの方いらっしゃいましたら教えてください。

アパッチの設定は以下の点を修正しました

AddHandler cgi-script .cgiのコメントをはずしました

<Directory "/home/*/public_html/cgi-bin">
Options ExecCGI
</Directory>

test.cgiの内容は
...続きを読む

Aベストアンサー

こんにちは。

私も時々そのエラーにぶつかります。
その場合の対処法をいくつか。
・#!/usr/bin/perl に-wオプションをつける。
・改行コードを変える。
(LFだけならCF+LFにしてみるとか)
・print "Contetnt-type: text/html\n\n"; の後に実際に改行を1行入れる。
asciiモードになっていることを確認して、もう1回アップロードしてみてください。

なんでだかよくわかりませんが、これで動くことが多々あります。

QApacheでCGIが正しく動かない。

RedHatLinux8をインストールして、
Webサーバーを立てよう~と思い立ててみました。
Apache2.0.40です。
一応htmlファイルはのぞけるようになったんですが、
CGIがちょっとおかしくて・・・
#!/usr/bin/perl
print "Content-type: text/html\r\n\r\n";
print "Hello, World.";
↑を書いたtest.plはHello, Worldとちゃんと表示されました。
しかし、掲示板・カウンターを開くと・・・
「ログファイルを開くことができません」
という主旨のメッセージが表示され、正しく実行できません。
./log.txt とちゃんと指定しているんですが・・・
そのログファイルを開くとサーバーがCGIをして認識しているらしく、
「InternetServerError」が出て開けない・・・。
CGIの属性は755 ログも緩くして755に設定しました。
それでも状況は変わりません。

Aベストアンサー

私も最新版を試してみましたが,以下の手順で動きました.(RedHat-8.0)

・アーカイブを /var/www/cgi-bin で展開
# cd /var/www/cgi-bin
# lha -x /tmp/mkakikomitai.lzh
・mkakikomitai.cgi の perl のパスを修正
・スクリプトの改行コードを変換
# dos2unix mkakikomitai.cgi
・cgi の実行許可
# chmod 755 mkakikomitai.cgi

これで cgi は動くようになったので,あとはエラーを見ながら(いい加減ですが…)以下を実行

# mkdir old
# chmod 666 mkakikomitai.cnt
# chmod 666 mkakikomitai_cnt.txt
# chmod 666 mkakikomitai.txt

これでもうまくいかないようなら,cgi を設置した場所や,apacheの設定で変更した箇所など,詳しい情報を補足してください.


このカテゴリの人気Q&Aランキング

おすすめ情報