• ベストアンサー

CGIでコードがむきだしの状態で出力します

 LinuxでCGIを使っているのですが、出力されるページがちゃんとしたhtmlページではなく、むき出しのソースコードのままで出てきてしまいます。  Apacheのhttpd.confも「AddHandler cgi-script .cgi」と設定もきちんとしてあって、  ヘッダーなども小文字と大文字の違いには気を付けたり、GoogleやWikipediaなどの有名サイトのものを借用したりしているのですが、ソース剥き出しの状況は変わらないです。  また、このcgiをPerlのコマンドラインから一時的に仮ファイルを作り、そこから直接リンクをクリックすると何も問題なくそのhtmlが表示されます。  実は最近、WindowsからLinuxに転向したのですが、Windows時代には使えていたものが使えなくなっているという状態です。  どなたか解決策を御存じの方は教えてください。  ちなみに環境を申し上げておきます。  WindowsXP Pro  Internet Explorer 7.0  FireFox 2.0  Apache 2.0  Linux Ubuntu 6.06 LTS - Dapper Drake  FireFox 2.0  Apache 2.0

  • CGI
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • TagoSuck
  • ベストアンサー率72% (16/22)
回答No.2

Apacheのhttpd.confでCGIファイルを置いてあるディレクトリがCGI実行のオプションが付いていないのでは? Ubuntuを使った事が無いので解りませんが、/home/httpd/htmlにCGIファイルがあるとだめで、/home/httpd/cgi-binになら大丈夫とかなら、設定の問題ではないかと思います。 /home/httpd/htmlにCGIを許可するなら、 <Directory /home/httpd/html> Options Indexes Includes FollowSymLinks </Directory> などとある、OptionsにExecCGIを追加してみて下さい。 <Directory /home/httpd/html> Options Indexes Includes FollowSymLinks ExecCGI </Directory> とこんな感じです。 ユーザーディレクトリなら <Directory /home/*/public_html> とかだと思います。 私の環境で試したら、CGIのソースが表示されました。 ただ、私の環境はApacheが1.3系なので、他の問題かもしれませんが...。 頑張ってください。

big-west
質問者

お礼

お騒がせしました。 皆さんのご意見、本当にありがとうございます。 今日も仕事帰りにいろいろと試してみたのですが、皆さんのご意見とはまったく別の方法で解決に至ることができました。 なぜかヘッダーを少し変えただけできちんと出力されるようになりました。 <Content-Type: text/html; charset=UTF-8;>  ↓ Content-Type: text/html; charset=UTF-8; これだけで、きちんと表示されるようになりました。 ただし、今後はLinuxに慣れてきたらDebianかFedoraに移りたいと思っているので、その時にまた同じような問題が発生するかもしれないので、皆さんのご意見を思い出してみることにします。 ありがとうございました。

その他の回答 (1)

noname#39970
noname#39970
回答No.1

ソース剥き出しが どういうソースなのか A.呼ばれたCGIのソース B.CGIが返したHTML(がtext/plainで出ちゃう) http://www.google.co.jp/search?hl=ja&lr=lang_ja&q=cgi%E3%81%AE%E7%B5%90%E6%9E%9C%E3%81%8Ctext/plain%E3%81%AB 検索はイマイチだった・・・

big-west
質問者

お礼

わざわざ検索までしていただいてありがとうございます。 いろいろとためになるサイトがありました。 わたしはずっと「CGI」「コード」「むきだし」のような検索だったので、こうした検索結果は出ませんでした。 わたしはhtml自体はそこまでは詳しくなく、ただのプログラムの出力のためにだけにCGIを使っているだけなので、有名サイトのヘッダーを借りて表示されればよい、というレベルの使い方しかしていません。 今までの結果はずっと「B」だったのですが、それは「text/plain」と関係があるのですね。 これからも勉強を続けたいと思います。 ありがとうございます。

関連するQ&A

  • LinuxのapacheでCGIが動かない

    RedHatLinux7でイントラネットでWebサーバーを構築しました(apache)で、CGIを動かしたいのですが、動きません。あるサイトで「httpd.conf の AddHandler cgi-script .cgiを生かせばいい」となっていたのでそうしましたが、まだ動きません。あと何を設定すれば良いのですか?(CGIのパーミッションはちゃんとしています。)httpd.confにCGIの記述が他にもありましたが意味がわからずそのままにしています。

  • apache でバイナリのCGIを動かすには

    apache でバイナリのCGIを動かすにはどうすればよいのでしょうか? (なお、プログラム自体に問題は決してありません。『HTTPD』を使うと問題なく動作します) OS:WIN98 C++バイナリのCGIを呼び出すと下記エラーとなります。 Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please .... the error. More ... log. - Apache/1.3.12 Server at http://127.0.0.2/ Port 80 最終アクセスログ 127.0.0.1 - - [12/Mar/2001:23:20:27 +0900] "GET /ab.cgi HTTP/1.1" 500 610 最終エラーログ [Mon Mar 12 23:20:25 2001] [error] [client 127.0.0.1] Premature end of script headers: e:/www.homepage/kokucho81/ab.cgi apache の httpd.conf と httpd.conf.default との比較 ** httpd.conf ServerName http://127.0.0.2/ ** httpd.conf.default #ServerName new.host.name ** httpd.conf DocumentRoot "E:/WWW.HOMEPAGE/KOKUCHO81" ** httpd.conf.default DocumentRoot "C:/Apache/htdocs" ** httpd.conf <Directory /> Options FollowSymLinks ExecCGI AllowOverride None ** httpd.conf.default <Directory /> Options FollowSymLinks AllowOverride None ** httpd.conf <Directory "E:/WWW.HOMEPAGE/KOKUCHO81"> ** httpd.conf.default <Directory "C:/Apache/htdocs"> ** httpd.conf Options Indexes FollowSymLinks ExecCGI ** httpd.conf.default Options Indexes FollowSymLinks MultiViews ** httpd.conf AddHandler cgi-script .cgi ** httpd.conf.default #AddHandler cgi-script .cgi そもそも、設定が足りてないんでしょうか? apacheを良く使う方、よろしくお願いします。m(_ _)m

  • OSXでcgi

    OSXでperlで作ったcgiを動かしたいと思い色々といじってるのですが全く動きません。 apacheのhttpd.confの設定で AccessFileName .htaccess AddHandler cgi-script .cgi AddHandler cgi-script .pl についてはコメントをはずして使えるようにして Perlのパスも#!/usr/bin/perlとしてsiteフォルダとcgiを置いてるディレクトリに.htaccessを下のように記述して作り AddType application/x-httpd-cgi .cgi AddType application/x-httpd-cgi .cgi/ パーミッション設定をちゃんとしてあげてるのですがブラウザからアクセスするとForBiddenとでてしっかりと設定してるはずのパーミッション設定が間違ってますと言われてしまいます。 OSXでcgiを動かすには他にももっと色々と設定しなければダメなんでしょうか?

    • ベストアンサー
    • Mac
  • CGI (suEXEC)について!

    CGI (suEXEC)についての質問です! OS: Red Hat Linux 7.3 httpd: Apache 1.3.28 Apacheの設定ファイル httpd.conf 内で設定してある DocumentRoot のディレクトリ内にある CGIを”パーミッション700の場合にのみ”動作するようにする方法はありますでしょうか? suEXECを使用してユーザディレクトリ内のCGIは700で動くようにできたのですが、 httpd.conf 内で設定してある DocumentRoot のディレクトリ内では700だと動かない為。 また、suEXECというものは、ユーザーディレクトリのみに適応されるものなのでしょうか? ご存知の方いらっしゃいましたら、アドバイス等を宜しくお願いします。

  • fedora core3でCGIがソースコードで表示されてしまいます。

    document root("var/www/html")でCGIを使うために、httpd.confの設定で#Addhandler cgi-script →Addhandler cgi-script , と書き直し、<Directory"var/www/html">のoption項目にExecCGIと追加しました。 アクセスするときはlocalhost/***.cgiとしています。 cgi fileのperlのパスが#!/usr/bin/perlとなっているのでその場所にちゃんとperlがあるかも確認しました。 .cgiファイルはWindowsXPからASCIIで転送したものです。.httpd.confの設定以外はデフォルトの状態です。 何日間か試行錯誤したのですが、うまくいきません。どうかご助言お願いします。

  • CGI

    MacOS10.10のApache2でCGIが動きません。 httpd.confの最後にこう記述してます。 <VirtualHost *:80> DocumentRoot "/Users/ユーザー/Sites/www" ServerName ドメイン <Directory /Users/ユーザー/Sites/www> AllowOverride All Options Indexes MultiViews ExecCGI FollowSymLinks AddType application/x-httpd-cgi .cgi .pl AddHandler cgi-script .pl .cgi DirectoryIndex index.html index.htm index.cgi </Directory> </VirtualHost> 記述は合ってると思うんですが……どこが間違ってるのでしょう?

    • ベストアンサー
    • Mac
  • apacheでCGIを動かす

    apacheでCGIを動かそうと思っていますが、どうしても出来ません。 環境は以下の通りです。 apache:1.3.35 OS:Windows2000 httpd.confの設定は 1.ScriptAlias /cgi-bin/ の行をコメントアウト 2.Alias /cgi-bin/ "E:/hoge/cgi-bin/"に変更してDirectoryタグを追加 3.AddHandler cgi-script .exeを追加 以上の3点をしましたが、新しく設定したディレクトリのcgiは動作しませんでした。 apacheのmodulesディレクトリの中にmod_alias.soというファイルが有りませんがそれは関係有るのでしょうか? また、apacheとtomcatの連携ということを以前行ったのですが、動かない事と関係あるのでしょうか? 文字数の関係で見づらい説明になっているかと思いますがよろしくお願い致します。

  • PerlのCGIとPHPを

     特定のディレクトリのCGIの中にPHP(Apacheのモジュール版)を書き、(CGIで<?php~?>とHTMLを出力させる)Perl/CGIを実行したときにその出力の中に含まれるPHPを実行させたくて、.htaccessに AddHandler application/x-httpd-php cgi AddHandler cgi-script .cgi を書いたのですが、どうやらPHPのAddHandlerの後に書かれているCGIの方が優先され、PHPが実行されず、CGIのみが実行されます。  順序を逆に書いても、今度はPHPが優先されてしまい、どちらか片方しか実行されません。  どうすれば、両方同時に実行させられるでしょうか、教えてください。  それが不可能ならば、とりあえずPerl/CGIからPHPを呼び出して先に実行させるようなことができるのならば教えてください。  ちなみに、httpd.confには拡張子cgiをすべてのディレクトリでCGIとして実行、拡張子phpもすべてのディレクトリでPHPとして実行させるようにAddHandlerされています。 Apache/2.0.58(Windows版) PHP/5.1.6 CGI: ActivePerl 5.88 です。

    • ベストアンサー
    • PHP
  • 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>

  • CGIの設定

    いつもお世話になっております。 各バーチャルドメイン内でCGIを動作させるためにApacheの設定を したのですが、「ページが表示されません」と出てしまいます。 (バーチャルドメインの設定も完了していて、HTMLファイル、PHPファイルは正常に動作しています。) よろしくご教示お願いいたします。 /etc/httpd/conf/httpd.conf -------------------------------------------------- ScriptAliasMatch /~(..*)/cgi-bin/(.*) /home/$1/cgi-bin/$2 <Directory "/home/*/cgi-bin"> AllowOverride None # Options None Options ExecCGI Order allow,deny Allow from all </Directory> (1) ↓にファイルをアップロード   パーミッションは「755」に設定してあります。   /home/ユーザ名/cgi-bin/count.cgi (2) ブラウザから↓のURLでアクセス   http://バーチャルドメイン/cgi-bin/count.cgi <環境> Red Hat Enterprise Linux 5 Apache:2.2.3