今なら家電が全品9%OFF!

cgiファイルを実行すると、「開く」や「保存」のダイアログが出てきて困ってます。

■環境は以下のとおりです。
・OS:windows7
・CドライブにApacheをインストール
・ActivePerlインストール済み

■httpd.confの変更した箇所(現状下記の状態です)
・Option Indexes FollowSymLinks Includes ExecCGI
・AllowOverride All
※以下は先頭の「#」を削除
・AddHandler cgi-script.cgi
・AddType text/html.shtml
・AddOutputFillter InCLUDES .shtml

http://localhost/ にはアクセス出来てます。

以上、宜しくお願いします。

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

A 回答 (3件)

#1です。


cgiの設定、もしくはcgiソースの書き方(1行目とか)がおかしそうですね。WindowsのApacheについては経験が無いのでどうすればいいかアドバイスできませんが、Apacheのエラーログに何かメッセージが出ているはずです。
    • good
    • 0
この回答へのお礼

こんにちわ、調べたところ、ローカルホストでcgiを実行できました。

アドバイス頂きまして、ありがとう御座いました。

お礼日時:2010/08/15 17:57

こんにちは。



なぜにContent-typeが「text/plain」???
「text/html」では?

>Apacheを再起動しようとすると、
>「Internet Explorer ではこのページは表示できません」と
>表示されてしまいます。
意味がよくわかりません・・・。
どういう手順でこうなったのですか?

この回答への補足

こんにちわ。ご回答ありがとう御座います。

手順を含めまして今まで、行った事を見て頂けますでしょうか。

■環境
・os:windows7(64bit)
・apache2.2.16(windows32bit)※ローカル
・ActivePerl(インストール済み)

※httpd.confファイル(現状)
・Options Index FollowSymLinks Includes ExceCGI
・AllowOverride All
・AddHandler cgi-script.cgi
・AddType text/html.shtml
・AddOutputFilter INCLUDES .shtml

http://localhost/abc/test.cgi
を実行すると「Internet Explorer ではこのページは表示できません示できず。」。

http://localhost/
にはアクセスできます。

※windowsネットワーク診断/トラブルシューティングの結果
→リモートデバイスまたはリソースが接続を受け付けません。

■上記、test.cgiのソース

#! c:/perl/bin/perl

# CGIヘッダーの出力
print "Content-type: text/html\n\n";

# HTMLの出力
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n";
print "<html>\n";
print "<head><title>Hello HTML</title></head>\n";
print "<body><p>こんにちは。これはHTML文書の例です。</p></body>\n";
print "</html>";


以上、宜しくお願い致します。

補足日時:2010/08/15 17:23
    • good
    • 0

cgiプログラムで生成しているContent-Typeヘッダが期待通りの値になっていないと思われます。

この回答への補足

こんにちわ。ご回答ありがとう御座います。

■ソースを見て頂きたいのですが、
#! c:▲/bin/perl
print "Content-type: text/★\n\n";

print "Hello Perl"

です。
※▲→perl64
※★→plain
※windows7(64bit)

■後、もう一点問題が発生しまして、
Apacheを再起動しようとすると、
「Internet Explorer ではこのページは表示できません」と
表示されてしまいます。

※インストールしたのが、
apache_2.0.54-win32-x86-no_sslwin32

だからでしょうか??

補足日時:2010/08/15 15:50
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

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

Q特定のCGIだけ、作動するかわりにダウンロードされてしまいます

いつもお世話になります。
今日、カウンタのCGIと、そのカウンタをセッティングするCGIを二つのサーバに設置したのですが、片方のサーバに設置したセッティングCGIがおかしいんです。

本当ならアクセスするとパスワードを求める画面になるはずですが、「次の場所からダウンロードするように選択しました」という、Windowsではおなじみのダイアログが現れて、そのパスワードを入れるページ自体をダウンロードすることになってしまいます。
ここで「ダウンロード」にせずに「上記の場所から開く」にすればパスワード入力画面は開くのですが、これはローカルディスク上で開いていることになりますから、もちろんCGIとしては作動してくれません。

しかし、こんな現象が発生してしまうのはWin98やWin MEでアクセスした場合で、Macでアクセスすると正常にパスワードを求めてきて、もちろんそのまま認証してカウンタのメンテができます。

また、このWinで正常に作動しないのは2つのサーバに設置した内の片方だけで、全く同じものを全く同じ名前とセッティングでアップしてある、もう一つのサーバ上のCGIはMacでアクセスしようがWinでアクセスしようが正常に作動するのです。

しかも、異常がある方のCGIと同じディレクトリにアップしてある、他のCGIは全て正常に作動するのです。

パーミッションの設定も、CGIは755、ログは666と、間違っていないことを確認してあります。
perlへのパスも、Macでなら動くことでもおわかりのように、間違っていません。
尚、このCGIはDOS-Vの改行コードで記述してあります。

どなたかこの異常の原因がおわかりの方はいらっしゃいませんでしょうか?
どうか解決のためのアドバイスをお願いいたします。

いつもお世話になります。
今日、カウンタのCGIと、そのカウンタをセッティングするCGIを二つのサーバに設置したのですが、片方のサーバに設置したセッティングCGIがおかしいんです。

本当ならアクセスするとパスワードを求める画面になるはずですが、「次の場所からダウンロードするように選択しました」という、Windowsではおなじみのダイアログが現れて、そのパスワードを入れるページ自体をダウンロードすることになってしまいます。
ここで「ダウンロード」にせずに「上記の場所から開く」にすればパス...続きを読む

Aベストアンサー

 CGIスクリプトそのものではなく,その出力がダウンロードされてくるんですよね。だとすると,一番怪しいのはMIMEタイプ設定なのですが…(MIMEタイプについては,参考URLをご覧ください)。

 ダウンロードされるファイルがなんというMIMEタイプとして認識されているか,判らないでしょうか?

 Mozilla(おそらく Netscape 6.1 も)などであれば,ダウンロードダイアログに「~ xxxx/yyyy タイプのファイルをダウンロード後~」というように,ダウンロードしようとしているファイルのMIMEタイプが出力されるのですが,IEではどうやればいいのか私は知らないので…。

 そのMIMEタイプがわかれば,なぜダウンロードされてしまうのかという原因究明の手がかりになると思うので,できれば調べてみてください。

 または,そのCGIスクリプトのなかで,"Content-type: xxxx/yyyy" という文字列を出力しているところがあれば,それがそのMIMEタイプなのですが…。そこによけいな文字(見えない文字~例えば全角空白など~という可能性もあります)が入ってないか,あるいは設定されていないということがないか,調べてみてください。

 Macでちゃんと動くのは,ブラウザー側でそのMIMEタイプをどう扱うかがきちんと設定されている,あるいは(こちらの方が可能性は高いのですが)MIMEタイプ判別をルーズに行っている(例えばMIMEタイプの判らないテキストファイルは text/html として扱う),などの理由からではないかと思います。

参考URL:http://home.tripod.co.jp/help/building/file_mime.html

 CGIスクリプトそのものではなく,その出力がダウンロードされてくるんですよね。だとすると,一番怪しいのはMIMEタイプ設定なのですが…(MIMEタイプについては,参考URLをご覧ください)。

 ダウンロードされるファイルがなんというMIMEタイプとして認識されているか,判らないでしょうか?

 Mozilla(おそらく Netscape 6.1 も)などであれば,ダウンロードダイアログに「~ xxxx/yyyy タイプのファイルをダウンロード後~」というように,ダウンロードしようとしているファイルのMIMEタイプが出力され...続きを読む

Qボタンの処理

ボタンをクリックしたら指定されたサブルーチンの処理をするようなプログラムを作ろうとしているのですができません。submitではなくbuttonでやりたいのですが無理でしょうか?分かる方がいらっしゃいましたらよろしくお願いします。

Aベストアンサー

#1です。

これはPerlというよりもHTMLやJavaScriptのお話になりますが、
<button value="削除" name="hoge" onClick="delete()">
とした場合、「ボタンを押したらJavaScriptのdelete()関数を呼び出す」といった意味になります。
mizumaki22さんの組んだソース内に「function delete()」があればそれが呼ばれますが、無ければそこでエラーが発生するでしょう。
これは全てクライアント側で行われる作業であり、Webサーバ側では関知しません。

引き換え、Perlを動かす為にはサーバにアクセスして.cgiファイルを呼ばなければなりません。
そして.cgiファイルが呼ばれた際にWebサーバが内部的に処理を行い、その結果をクライアントに返します。
その為に一般的に使用されるのが<form action="hoge.cgi">といった記述です。
そうして<form>に記述された.cgiファイルを呼ぶには、<form>に対して"submit"を送らなければなりません。
その為に使用するのが<input type="submit" value="削除">といったような記述です。

mizumaki22さんのご質問の場合、この<input type="submit">を使わず<input type="button">で同じような動作をさせたいのかな?と読み取れました。
その場合には<input type="button">を押されたタイミングで"submit"を送ってやる必要があります。
それが#1で書いた<input type="button" onClick="submit()">の意味です。

前置きが長くなりましたが、直し方について・・といっても、もうほとんど書いてしまいましたが。(^_^;
mizumaki22さんの補足してくだっさったソースを見ると、CGI.pmというやつでしょうか。(正直、この辺りには余り詳しく無いのですが。)
> print button(-value=>"削除",-name=>"$link2",-onclick=>"delete()");
見たところ、この記述だと<input type="button" value="削除" name="hoge" onClick="delete()">というHTMLに出力されるように見受けられます。
これが<input type="button" value="削除" name="hoge" onClick="submit()">とHTML出力されれば動くと思われますので、
> print button(-value=>"削除",-name=>"$link2",-onclick=>"submit()");
でよろしいかと思われます。

#1です。

これはPerlというよりもHTMLやJavaScriptのお話になりますが、
<button value="削除" name="hoge" onClick="delete()">
とした場合、「ボタンを押したらJavaScriptのdelete()関数を呼び出す」といった意味になります。
mizumaki22さんの組んだソース内に「function delete()」があればそれが呼ばれますが、無ければそこでエラーが発生するでしょう。
これは全てクライアント側で行われる作業であり、Webサーバ側では関知しません。

引き換え、Perlを動かす為にはサーバにアクセスして.cgiファ...続きを読む

Qhtml上で、バッチやexeファイルの起動をしたい

わけあって、学校(養護学校)初心者向けにhtmlでメニューを作っています。
さて、スタートボタンやディスクトップにショートカットを使わず、htmlの中からバッチファイルやexeファイルを起動できるでしょうか?

もし可能ならば、教えてください。OSはWindows XPで起動したいファイルはexeファイルとバッチファイルです。
よろしくお願いします。

Aベストアンサー

<html><head></head>
<body>
<a href="file:///c:/windows/system32/calc.exe">電卓</a>
</body>
</html>

Q起動できない。コードだけが表示されてしまう。

最近CGIを勉強し始めたものです。
apache2.2.9をいれ、ActivePerl(Ver5.005_03)を入れて
下記のような簡単なコードを書いて実行してみましたが起動ができません。
=====================
#!/usr/bin/perl
print "abc";
=====================
なにか設定が必要でしょうか?
httpd.confあたりで設定が必要な部分がありますでしょうか?
調べてみたところ、推奨する設定だったのでそのままにして
テストしています。

Aベストアンサー

No.2です。
私の質問にお答えいただいてないので再確認です。
o Perl.exe は /usr/bin/ (Windowsなら C:\usr\bin)にありますか。
 そうでないなら、スクリプトの1行目に書く #!/usr/bin/perl を perl.exe のパスに合わせて書換えないといけません。
もし、C:\perl\bin\perl.exe なら、#!/perl/bin/perl です。
o cgiファイルは cgi-binフォルダに置いてありますか。
 apacheの初期設定は cgi-binフォルダ以外では cgiファイルは実行できないと思います。
o httpd.confで .cgiファイルが実行できるようにしましたか。
 httpd.cnf の中に、
 #AddHandler cgi-script .cgi という行があります。頭に付いている # を取ってください。
そうしたらいったん、apacheを止めて再起動した後、ブラウザから目的のcgiファイルをリクエストしてください。

QCGIでソースがそのままでてしまうのですが・・・。

CGIでソースがそのまま表示されてしまうのですが、どうしてなのでしょうか?

先週からCGIやPerlを学び始めました。そこで簡単なものを試しに作ってみたのですが、入力したソースがそのまま表記されてしまいます。

ちなみに、こんなものです。

#! c:/perl64/bin/perl

print "Content-type: text/plain\n\n";
print "Hello Perl !";

どこをどう変えればいいのか、わからないので、質問してみました。

わかる方がいましたら、教えてください。

初心者なので、お手柔らかにお願いします。

.





この質問に補足する.

Aベストアンサー

CGIスクリプトのソースがそのまま出力されるのは、そのファイル/URIがCGIとして実行できていないためです。

httpd.confの<Directory>ディレクティブや<Location>ディレクティブなどの指定箇所が間違えているか、
ファイルの拡張子を間違えているか、
httpd.confを書き換えてからApacheをリスタートしていないか。。。


Forbiddenが出てきたら.cgiファイルに実行権限が無い。
Internal Server Errorが出てきたら、Perlがインストールされていないか.cgi拡張子とPerlが関連づけられていない。

ということが考えられます。

Qapacheユーザの実行権限設定はどうすれば良い?

■環境
・Cent OS

■状況
・所有者hogeのディレクトリxに対して、スクリプト経由(apacheユーザ権限)でchmodしようとすると、エラーになります
・スクリプト経由(apacheユーザ権限)でディレクトリ作成しようとしても、エラーになります

■質問
・どうすれば良いでしょうか?
・所有者hogeのグループにapacheユーザを入れたら効果あるでしょうか?

・ディレクトリ所有者がhogeであることが問題? apache所有にした方が良い?
・それとも、スクリプト実行を、apacheユーザ権限ではなく、所有者hogeにした方が良い? どうやって?

・そもそもapacheユーザ権限は、一般的にどう設定するものなのでしょうか? rootみたいに最強にする?

Aベストアンサー

> 所有者hogeのグループにapacheユーザを入れたら効果あるでしょうか?

基本的にはそれでOKですが、それだけではapacheユーザが作成した
ファイルをhogeユーザが変更できなくなってしまうかもしれません。

user=hoge,group=hoge
user=apache,group=apache,groups=hoge

groupは一次グループ、groups2は二次グループです。umask002 (新
規作成されたファイルのパーミッションが775 ) に設定されている
とします。

hogeユーザが作成したファイルはhoge/hoge なので、hogeグループ
に属するapacheユーザは編集可能です。しかし、apacheユーザが新
規作成したファイルはapache/apache になるので、apacheグループ
に属さないhogeユーザは編集できません。

そこで、ディレクトリをhogeユーザで作成し、ディレクトリにsgid
ビットを立てます。

$ chmod 2775 dir
$ ls -l dir
drwxrwsr-x 2 hoge hoge 4096 4月 7 13:35 dir

これで、apacheユーザがdir上に作成したファイルはapache/apache
ではなく、apache/hoge になるので、hogeユーザも編集できるよう
になります。

> 所有者hogeのグループにapacheユーザを入れたら効果あるでしょうか?

基本的にはそれでOKですが、それだけではapacheユーザが作成した
ファイルをhogeユーザが変更できなくなってしまうかもしれません。

user=hoge,group=hoge
user=apache,group=apache,groups=hoge

groupは一次グループ、groups2は二次グループです。umask002 (新
規作成されたファイルのパーミッションが775 ) に設定されている
とします。

hogeユーザが作成したファイルはhoge/hoge なので、hogeグループ
に属するapacheユーザは編集可能...続きを読む


人気Q&Aランキング