• ベストアンサー
  • すぐに回答を!

HTMLからのpl実行

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

共感・応援の気持ちを伝えよう!

  • 回答数6
  • 閲覧数314
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答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だったため 修正したところ、うまく動くようになりました。 大変初歩的なミスですみません。

関連するQ&A

  • apacheのCGI設定

     pc9821にFreeBSD(98)をいれapache1.3を起動させています。cgiはlight.cgiというソフトをつかっています。なかなかcgiがうまくいきません。参考ページには public_html / index.html (トップページ) | +-- bbs / light.cgi [755] | admin.cgi [755] ・・・・(省略) +-- lock [777] / | +-- past [777] / 0001.cgi [666] とかかれていますが、実際に私のサーバーにはpublic_htmlというフォルダは存在していなくて /usr/local/www/cgi-binにbbsというフォルダをつくり あとは上のようにしています。またindex.htmlは/usr/local/www/dataのなかにいれて表示してWebサーバーとしてはたらいています。またapacheの/usr/local/etc/apacheのhttpd.confは 関係ありそうな行だけあげると ServerRoot "/usr/local" DocumentRoot "/usr/local/www/cgi-bin" <Directory "/usr/local/www/cgi-bin/bbs"> Options Indexes FollowSymLinks MultiViews <location "/cgi-bin/"> Options ExecCGI AllowOverride AuthConfig Limit Order allow ,deny Allow from all </Location> <IfModule mod_mime.c> TypesConfig /usr/local/etc/apache/mime.types ADDHandler cgi-script .cgi </IfModule> ScriptAlias /cgi-bin/ "/usr/local/www/cgi-bin/" <Directory "/usr/local/www/cgi-bin/bbs"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> AddHandler cgi-script .cgi どこがおかしいのかおしえていただけないでしょうか?

    • ベストアンサー
    • CGI
  • apacheで「You don't have permission to access 」

    Nagiosというソフトをインストールしているのですが(Webベースで動く)、 http://localhost/nagios にアクセスすると、「You don't have permission to access /nagios/ on this server.」と出てしまいます。Apacheのhttpd.confは最後の行に、 ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin <Directory "/usr/local/nagios/sbin"> AllowOverride AuthConfig Options ExecCGI Order allow,deny Allow from all </Directory> Alias /nagios /usr/local/nagios/share <Directory "/usr/local/nagios/share"> Options None AllowOverride AuthConfig Order allow,deny Allow from all </Directory> を加えて、以下も加えました。 <Directory /> Options FollowSymLinks AllowOverride Options </Directory> AddHandler cgi-script .cgi 何か原因は考えられるでしょうか?これだけではやはり、情報不足でしょうか?

  • CGIが動きません!!

    CGIが動きません。htmlを表示できる状態です。 エラーログには「 couldn't spawn child process: g:/program files/apache group/apache/cgi-bin/hello.cgi」と表示されています。 どうしたら良いのでしょうか? windouw NT 4.0 + Apache version 1.3.19 + Active Perl version 5.005_03 です。 perlの構文チェックは問題なしです。 httpd.confの設定は下記のようにしました。 1.AddHandler cgi-script .cgi を追加。 2.オプションの設定にExecCGIを追加。 <Directory "G:/Program Files/Apache Group/Apache/cgi-bin"> AllowOverride None # Options None Options ExecCGI Order allow,deny Allow from all </Directory>

その他の回答 (5)

  • 回答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
  • taloo
  • ベストアンサー率44% (1016/2281)

もう一個ありました。 AllowOverride None Overrideを全て拒否してますので、それ以下の全ての指定が無効になってますね。 この行を消してみてください。 1回で全部見つけられずすみません。

共感・感謝の気持ちを伝えよう!

  • 回答No.3
  • taloo
  • ベストアンサー率44% (1016/2281)

> <Directory "/usr/local/uie/apache-root/cgi-bin/"> 最初の質問の指定と違ってますが? 違うディレクトリを指定しても意味がないと思いますけど。

共感・感謝の気持ちを伝えよう!

質問者からの補足

すみません、いままでは公の場ということもあり フォーマルなものに書き換えていましたが 先ほどのはそのままコピーしてしまいました。 設定は同じディレクトリを指しています。

  • 回答No.2
  • taloo
  • ベストアンサー率44% (1016/2281)

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

  • apacheのScriptAliasの記述について

    どなたか,ご教授いただければ幸いです。 WindowsXp Proでapacheを動かしています。次の設定で,cgiはうまく動作していました。 --- <IfModule alias_module> ScriptAlias /cgi-bin/ \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/\" </IfModule> <Directory \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin\"> AllowOverride None Options ExecCGI Order allow,deny Allow from all AddHandler image/gif .gif AddHandler image/jpeg .jpg </Directory> --- これに, http://www.miloweb.net/win/server/apache.html を参考にして,各ユーザーフォルダでcgiが実行できるようにしようと,次のようにしました。 --- <IfModule alias_module> ScriptAlias /cgi-bin/ \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/\" ScriptAlias /cgi/ \"C:/www/users/*/cgi/\" </IfModule> <Directory \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin\"> AllowOverride None Options ExecCGI Order allow,deny Allow from all AddHandler image/gif .gif AddHandler image/jpeg .jpg </Directory> <IfModule mod_userdir.c> UserDir \"C:/www/users/*/\" </IfModule> <Directory \"C:/www/users/*/cgi/\"> AllowOverride None Options ExecCGI Order allow,deny Allow from all AddHandler image/gif .gif AddHandler image/jpeg .jp </Directory> --- その結果, http://localhost/~user/ としてuserのホームページにアクセスできるようになったのですが, cgiについては, http://localhost/~user/cgi/・・・ としてもアクセスできません。どなたか原因をご教授いただけないでしょうか。 ScriptAlias /cgi-bin/ \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/\" ScriptAlias /cgi/ \"C:/www/users/*/cgi/\" の行を入れ替えると,\"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/\"においてあるcgiが実行できなくなります。ScriptAliasは1行目しか有効でないようにも見えるのですが,上に書いた参考URLではできているようなので,戸惑っています。

  • Fedora Core1サーバーでCGIが利用できません

    Fedora Core1でwebサーバーを立てたのですが、実行しようとすると「500 Internal Server Error」となってCGIが動きません。 perlへのパスやパーミッションの設定も見直しましたが、どこの設定が間違っているか分からないので、設定方法を教えてもらえないでしょうか? 現在の環境は ホスト名:saba.dyndns.org perlのパス:/usr/local/bin/perl CGIを仕えるようにしたいユーザー:guest CGIを設置するディレクトリ:/home/guest/cgi-bin/ Apacheのバージョンは2.0.49 となっています。 また以下はhttpd.confの抜粋です。 Listen *:80 #ScriptAlias /cgi-bin/ "/var/www/html/" ScriptAlias /cgi-bin/ "/home/guest/public_html/cgi-bin/" AddHandler cgi-script .cgi .pl <Directory "/home/guest/public_html/"> Options ExecCGI AllowOverride None Allow from all Order allow,deny </Directory> <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options Includes ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> 長文失礼しました。

  • /cgi-bin/のファイル読み出し

    WindowsXPでApacheをlocalhostで使用しています。 httpd.confを以下のように設定してcgiは問題なく作動していますが、/cgi-bin/に置いた画像やhtmlが読み出せません (すなわちhttp://localhost/cgi-bin/にアクセス出来ず、Forbiddenのエラーが出ます) 今は仕方なく、cgiで使用するファイルや画像をDocumentRoot配下に置いていますが、/cgi-bin/配下のファイルを読み出すhttpd.confの設定を教えて下さい。 DocumentRoot "F:/" <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory "F:/"> AllowOverride None Order allow,deny Allow from all </Directory> <IfModule mod_alias.c> ScriptAlias /cgi-bin/ "F:/cgi-bin/" <Directory "F:/cgi-bin"> AllowOverride None Options ExecCGI MultiViews Order allow,deny Allow from all </Directory> </IfModule>

  • apacheとCGIの設定(httpd.conf)について

    Apache/1.3.26を使用しています。 CGIの定義の中に Alias /cgi-bin/ /usr/lib/cgi-bin <Directory /usr/lib/cgi-bin/> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> があるのですがこれは何を定義しているのでしょうか? また、ある指定のフォルダ /var/www/cgi-bin だけ CGI設置可能にするにはどうすればよいでしょうか?

  • ApacheのScriptAliasについて

    ScriptAlias /cgi-bin/ /var/www/cgi-bin/ ScriptAlias /cgi-bin/ /home/*/public_html/cgi-bin/ # # "/usr/lib/cgi-bin" could be changed to whatever your ScriptAliased # CGI directory exists, if you have that configured. # <Directory /var/www/cgi-bin/> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> <Directory /home/*/public_html/cgi-bin> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> 何がやりたいかと言うと複数箇所でcgi-binを作ってCGIをうごかせるようにしたいのですが、ScriptAliasは複数指定ってできるのでしょうか? できなければ何かうまい方法はないでしょうか?よろしくお願いしますm(_ _)m

  • apacheによるCGIの使用について

    極めて初歩的な質問かも知れませんが、ご回答頂けると幸いです。 現在、私は玄箱(非HG)を使用して、apache1によるホームページを開いています。OSはMontaVista LinuxとDEBIANの二種類を使用しているのですが、MontaVistaLinuxの方で稼動しているapacheでは、正常にCGIが使えるのに対し、DEBIANの方では、MontaVistaLinuxと全く同じバージョンのapacheを使用し、CGIの設定も全く同じ状態であるにも関わらず、何故かCGIが使用できません。必ずInternalServerErrorとなってしまいます。何度もCGIの設定を見直したのですが、どうしてもDEBIANにインストールしたapacheではCGIが使えませんでした。DEBIANでapacheは使用できないのでしょうか? 現在のCGIに関する設定は以下のようになっています。 <IfModule mod_alias.c> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ # # "/usr/lib/cgi-bin" could be changed to whatever your ScriptAliased # CGI directory exists, if you have that configured. # <Directory /usr/lib/cgi-bin/> AllowOverride None Options None Order allow,deny Allow from all </Directory> </IfModule> また、AddHandler cgi-script .cgiの行はコメントアウトしています。 参考サイト:http://www5.plala.or.jp/vaio0630/apache/apache_cgi.htm DEBIANでapacheが使用できないとは思えないのですが、現実に使用できず、とても悔しいです。 もしDEBIANにインストールしたapacheでCGIを使える方がいましたら、どのような設定をすればCGIが動くのかを教えていただけると幸いです。 どうぞ宜しくお願い致します。

  • PHP実行でファイルのダウンロードのダイアログが開きます。

    OSはDebian GNU/Linux 3.0です。 PHP4.3.7とapache1.3.31において PHPファイルが正常に開けません。 下記のファイルを作成しパーミッション777で FFFTPを用いてアップロードしました <? phpinfo(); ?> しかしながらブラウザでアクセスすると、ファイルの ダウンロードのダイアログが開きます。 設定はapache側のみしており、 <Directory /var/www> options All AllowOverride All Order allow,deny allow from all </Directory> addhandler cgi-script .cgi .pl addtype text/html .shtml addhandler server-paresd .shtml を変更しました。PHPの方は変更していません。 どうしてファイルのダウンロードのダイアログが 開くのでしょうか?

  • cgi実行ディレクトリをデフォルト以外に追加設定する方法

    apacheのcgi-bin/のディレクトリはデフォルトだと、 DIR: /usr/local/apache/cgi-bin/ に設定されていると思います。 さらに実行出来るディレクトリを追加してあげる場合 httpd.confのScriptAliasを 手順的に追加するだけで出来るのでしょうか? 例 ScriptAlias /cgi-bin/testdir/ "/home/test/testdir/" <Directory "/home/test/testdir"> Options +ExecCGI </Directory>

  • Apach2.0 ホームディレクトリでCGIが

    こんにちは。 CGIの勉強をしています。 わかる方がいらっしゃいましたら、おしえてください。 ソースは、poderosaでつないでviにて作成。 ブラウザからのアクセス http://XXX.XXX.XXX.XXX/~admin/cgi-bin/test.cgi (test.cgi)755 #!/usr/bin/perl print "Content-type: text/html\n\n"; print "Hello\n"; ./test.cgi にて、Helloと表示される (httpd.confに追加したもの) UserDir public_html <Directory /home/*/public_html> AllowOverride All Options IncludesNoExec ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> 以下を追加したこともあり↓ <Directory /home/*/public_html/cgi-bin/> AllowOverride None Options ExecCGI SetHandler cgi-script Order allow,deny Allow from all AddHandler cgi-script .cgi </Directory> よろしくおねがいします。

  • CGIと permissionの問題

    win2000のos上で,ApacheでCGIをローカルで試していますが, 下記のようなerrが出ます。 Forbidden You don't have permission to access /namazu.cgi on this server. --------------------------------------------------------------------------------Apache/1.3.19 Server at 127.0.0.1 Port 80 logを見ると,下記です。 [Sun Sep 16 17:22:04 2001] [error] [client 127.0.0.1] Options ExecCGI is off in this directory: c:/~nakai/namazu.cgi このdirの .htaccess は下記です。 AllowOverride Options Options +ExecCGI 一方,Apache の httpd.conf  #ScriptAlias /cgi-bin/ "C:/Program Files/Apache Group/Apache/cgi-bin/" ScriptAlias /cgi-bin/ "C:/~nakai/cgi-bin/" # # "C:/Program Files/Apache Group/Apache/cgi-bin" should be changed to whatever your ScriptAliased # CGI directory exists, if you have that configured. # #<Directory "C:/Program Files/Apache Group/Apache/cgi-bin"> <Directory "C:/~nakai/cgi-bin/"> AllowOverride None Options None # Options ExecCGI Order allow,deny Allow from all SetHandler cgi-script </Directory> どのあたりに問題点かあるのでしょうか?