htmlのタグに下記のように記述し(test.html)
<FORM METHOD="POST" ACTION="http://192.168.100.100:8080/cgi-bin/test.pl">
cgi-binにあるtest.plを実行したいのですが、
test.plのコードの中身がブラウザに表示されてしまいます。
httpd.confの設定は下記のように設定してあり、
権限もtest.pl,test.htmlともに755で設定しています。
**
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
<Directory "/usr/local/apache/cgi-bin/">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
AddHandler cgi-script .cgi .pl .rb
No.6ベストアンサー
- 回答日時:
その後どうなったのか判りませんが 今日少し時間がありましたので
apache1.3.41をコンパイルしてみました(2.0や2.2と違ってコンパイルがすぐ終わるね)
/usr/local/uie/apache-root/cgi-bin/ ディレクトリを作って
#5の下に書いたスクリプトを env.txtとして保存
さらに同じ内容で拡張子無しの 0 というfile名でも保存して
chmod 705 *
/usr/local/apache/conf/httpd.conf に
ScriptAlias /cgi-bin/ "/usr/local/uie/apache-root/cgi-bin/"
<Directory "/usr/local/uie/apache-root/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
#AddHandler text/plain .cgi .pl .txt
##↑の行頭の#を取るとCGIではなくプレーンテキストとして扱われます。
</Directory>
port:8134
#↑80から8134に変更
と記述してから
/usr/local/apache/bin/apachectl start
http://ホスト名:8134/cgi-bin/env.txt
http://ホスト名:8134/cgi-bin/0
ともに問題なく CGIとして動きます。
次に 上記 #AddHandler 行頭の # を取ってから
/usr/local/apache/bin/apachectl restart
すると
http://ホスト名:8134/cgi-bin/0
はCGIとして動作しますが
http://ホスト名:8134/cgi-bin/env.txt
はプレーンテキストとしてソースが表示されます
(↑FireFOXの場合 MSIEだと文内にHTMLタグが有るのでtext/plainでサーバーから送られてもHTMLとして表示してしまいます)
###まとめとして
1.ScriptAlias内ではデフォルトで全てのfileを拡張子とは無関係にCGIとして扱われる
2.逆にScriptAlias内でCGI以外として扱ってほしい場合は AddHandler で指定する
あと、もしも/usr/local/apache/conf/httpd.confをいじりすぎて訳が判らなくなったら
mv httpd.conf test-httpd.conf などと名前を変えてから
/usr/local/apache/conf/httpd.conf.default をhttpd.confとしてコピーすれば
初期状態に戻ります(apache2系なら conf/の下の original/httpd.conf)
ありがとうございます。
そのご試行錯誤してソースの改行コードがCR+LFだったため
修正したところ、うまく動くようになりました。
大変初歩的なミスですみません。
No.5
- 回答日時:
ScriptAliasが有効な場合
OptionsもAllowOverrideもNoneのままで
AddHandlerの設定も不要です
つまり<Directory "/usr/local/apache/cgi-bin/"> に関しては
質問文のままでCGIが動きます
ScriptAliasで設定されたディレクトリ内は
初期状態のままで 全てのFile(拡張子の有無に関わらず)がCGIと見なされます
ですから 普通の.txtや 画像Fileを置いて、ブラウザでアクセスしようとしても
ApacheはCGIとして実行させようとしますので 必ず500errorに成ります。
ですから 質問者さんの場合に考えられるのは
1.ScriptAliasが無効になっている
ScriptAliasではなく普通のAliasで指定されている
これだと当然初期状態のままでは cgiは動きませんので
<Directory コンテナで OptionsとAddHandler を指定するか
AllowOverrideで.htaccessを有効にして そちらでOptionsとAddHandler を指定しないとCGIとして動きませんが
ただ不思議なのは 少なくともほとんどのLinuxなら
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
はApache1.3系を自分でコンパイルして入れた場合の初期設定のまま
(Apache2系だと ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/")
ですので わざわざScriptAlias をAliasと書き換えない限り CGIが無効になる筈は無いのですが?
2.実は実行されているが CGIで text/plain を吐いているため
MSIEでおかしな処理をする
これは、昔はときどきApacheのMLでも質問されてましたが
MSIEが変な仕様のためにtext/plainをうまく処理できません
text/html を使ってHTML文を出力した方がいいです。
####オマケ付き(笑) 以下のスクリプトを
### /usr/local/apache/cgi-bin/env.txt (.cgiや .plでなく .txtです)という名前で設置し
### ブラウザでアクセスしてみてください
### ScriptAliasが有効であれば 環境変数一覧が表示されます
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print<<HTML_HEAD;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML lang="ja">
<HEAD>
<TITLE>ENV TEST</TITLE>
</HEAD>
<body>
<H2>ENV TEST</H2>
<hr>
HTML_HEAD
foreach (sort(keys(%ENV))){print "$_ = $ENV{$_}<P>\n";}
No.4
- 回答日時:
もう一個ありました。
AllowOverride None
Overrideを全て拒否してますので、それ以下の全ての指定が無効になってますね。
この行を消してみてください。
1回で全部見つけられずすみません。
No.2
- 回答日時:
AddHandler cgi-script .cgi .pl .rb
この記述ですが、<Directory>の外側に書いてありますか?
それだと.htaccessのあるディレクトリに適用されて、/usr/local/apache/cgi-bin/の中にある.cgi、.pl、.rbファイルには適用されませんので、
<Directory>の中に書く様にしてみてはいかがでしょうか。
それから
Options ExecCGI
ではなく
Options +ExecCGI
にしておく方がいいと思います。
この回答への補足
ありがとうございます。
このように設定して再起動してみましたが
ソースコード表示のままでした。
<Directory "/usr/local/uie/apache-root/cgi-bin/">
AllowOverride None
Options +ExecCGI
Order allow,deny
Allow from all
AddHandler cgi-script .cgi .pl .rb
</Directory>
No.1
- 回答日時:
Options None が原因ではないでしょうか。
Options +ExecCGI としてみてください。
参考URL:http://httpd.apache.org/docs/2.0/ja/howto/cgi.html
この回答への補足
ありがとうございます。
<Directory "/usr/local/apache/cgi-bin/">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
設定を変更してみましたが、結果は変わりませんでした。
ソースコード表示のままです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL Mac です。ローカルホストの phpMyAdmin にアクセスできません。 1 2023/06/06 17:14
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- CGI htmlからcgiを自動的に起動させたい 1 2023/02/21 19:39
- その他(プログラミング・Web制作) robots.txtが”allow”のサイトを探しています 2 2022/10/09 13:07
- UNIX・Linux cronでシェルスクリプト実行時のkubactlコマンドが機能しない対処法。 2 2022/08/03 18:58
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- UNIX・Linux postfix smtpサーバーリレーがTLSハンドシェーク失敗 1 2022/08/15 15:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで集計したい。
-
apacheでPerl CGIが作動せず、5...
-
POSTメソッドの最大容量について
-
ホームページにメールフォーム...
-
ホームページでCGIのフォームを...
-
CGIって何ですか?簡潔に教えて...
-
cgiの注釈が出来ない
-
CGI.pmはもう古い!?
-
フォームを再送信しますか?
-
入力フォーム(電話番号)
-
プロバイダのスピードは、maps...
-
3DCG
-
cgi アクセス制限 エラー
-
CGIの記述について教えてくださ...
-
CGIの設置が分かりません・・・
-
ホームページにCGIを設置したの...
-
ホームページにCGIを設置したの...
-
サーバーのエラーでおしえてく...
-
ホームページの事でおしえてく...
-
さくらサーバーにcgiフォームを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
bashシェルスクリプトで空白が...
-
シェルスクリプト(Linux)【初心...
-
CGIでの環境変数PERL5LIBの設定
-
500エラーorダウンロードになる...
-
シェルスクリプトの記載方法
-
パールスクリプトを呼び出すと...
-
~/.bashrcを間違えて保存してし...
-
eclipseでC言語がコンパイルで...
-
pythonのエラーについて
-
scpコマンドでリモートサーバの...
-
書き込み権限が無いためコピー...
-
Viで書き込もうとすると、保...
-
/ が何時の間にか「Read-only f...
-
コマンド終了ステータス
-
/etc/passwd と /etc/shadowを...
-
FTPコマンドの戻り値について
-
DOSコマンドでのワイルドカ...
-
rcpコマンドについて、教えて!
-
Illustratorのデータをまとめて...
-
IBM漢字コードのSJIS変...
おすすめ情報