Apacheでphpとcgiを使いたいのですが

このQ&Aのポイント
  • Apacheでphpとcgiを使える方法とは?
  • Apacheでphpは問題なく使えますが、cgiには問題があります。
  • cgiファイルと他のファイルを1つのフォルダ以下で管理する方法はある?
回答を見る
  • ベストアンサー

Apacheでphpとcgiを使いたいのですが

phpは問題なく使えましたが、cgiで問題があります。 今まではサーバーソフトにANHTTPDを使っていたのですが、phpを使う上で問題があったので汎用性のあるApacheに乗り換えました。するとphpはうまく動いた反面、cgiがうまく動作しなくなってしまいました。 ANHTTPDのときは、ローカルホスト以下のフォルダならどこであろうとcgiを含むすべてのファイルが使用できましたが、Apacheでは指定したフォルダ以下にcgiしか置けないみたいでした。そのフォルダ内にhtmlファイルなどを置くとアクセスできません。 この状態で使うとなると、cgiファイルだけその1箇所のフォルダ以下に集め、他のファイルを別のディレクトリに置かなくてはいけませんが、それでは1つのプログラムに必要なファイル類がバラけてしまうのでその方法は使いたくありません。 どうにかして1つのフォルダ以下でcgiとその他のファイルを扱えるように出来ませんでしょうか?また、僕が使っている今の方法では、cgiプログラムの1行目のパスを「C:/Perl/bin/perl」にしなくてはいけませんが、これもWebサーバー上にアップする際に書き換える手間がかかってしまいます。ANHTTPDの時は「/usr/bin/perl」「/usr/local/bin/perl」のような状態でも普通に使えました。この書き換えの手間を省く方法もありましたら情報いただければと思います。 以上です。 よろしくお願いいたします。

  • CGI
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
回答No.1

OSやhttpd、Perlなどの種類やバージョンを書くようにして下さい まあ、大体のことは推測できますがね。 で、この辺りの設定の理屈が判らないとセキュリティ的にも厳しいものがあるので、公開することをお考えなら慎重に。 さて、本題ですが ・何もかんも構わずどこのフォルダでもCGIが使えるようにする方法  httpd.confの <Directory /> 行の上あたりにでも以下の4行を追加してから、Apacheを再起動してください <Location "/"> Options ExecCGI AddHandler cgi-script .cgi </Location> ・それとは別にcgi-binでもhtmlを使う方法 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2047461 ・perlのパスの問題 Apacheをインストールしたのと同じドライブ(C:とかE:とか) に \usr\bin フォルダを作り、そこにc:\perl\bin\ にあるperl.exeをコピーしてください(C:なら c:\usr\bin\perl.exe になります) 本当はperlのインストール時に c:\usr などを指定した方が良いのですが もしもApache1.3系なら http://mm.apache.or.jp/pipermail/newbie/2003-July/003863.html の方法も有ります

関連するQ&A

  • CGIのパス(Apache winで)

    初歩的な質問ですみません。 環境 windows2000 サーバー Apache/1.3.20 ActivePerl-5.6.1.626 をインストールが完了して、CGIを動作させようとしています。 ApacheでのHTML動作はできています。 CGIプログラムの一行目に #!/usr/local/bin/perl と記載されています。 その文字列を #!c:/bin/perl.exe に変更して現在動作させています。 しかし、ISPのHPスペースのperlへのパスは #!/usr/local/bin/perl なので、転送前に一行目を変更しています。 変更しなくても良いように ApacheでのCGIのパスを #!/usr/local/bin/perl で動作する方法を どなたか教えていただけないでしょうか? ちなみに Perlは[c:\bin]にインストールしてあります。 Apacheは[g:\apache]にインストールしてあります。

  • 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
  • CGIが動きません

    uranai.cgiのパーミッションは755です。 #!/usr/local/bin/perlではなく #!/usr/bin/perlを使っていますが、 これはサーバの説明にありました。 下記URL内の3ファイルをCGIフォルダに格納して サーバにアップしましたが、エラーになります。 cgi-binにする必要はないとのサーバ設定の記述にありました。 動かない理由がお分かりの方は、ご教授いただけると幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • PHPをcgiとして使う方法がもしあったら教えて下さい!

    PHPをサーバーサイド言語でなくて、 一行目に #!/usr/bin/php などと書いて、 Perlと同じようにcgiとしてブラウザから使える方法 がもしあったら教えて下さい!

    • ベストアンサー
    • PHP
  • CGI版PHP?

    よろしくお願いします 現在ローカルで Windows2000+Apache2+php4のPHPの実行可能環境を構築しています ところが、現在使用しているサーバーの1つが CGI版PHPというのかどうかわかりませんが 拡張子を.cgiにして1行目に #!/usr/local/bin/php-cgi-4.3.11 などを書いてPHPを実行する方法をとっています これだと、ローカルで構築したあとに拡張子を変えて リンクを変えて・・・と面倒なので 拡張子がphpでもcgiでも実行できる環境を構築できないかと思い 質問させていただきました 参考になるホームページなどがありましたら教えていただけないでしょうか?

  • Apacheでcgiができないんです。

    以下のホームページと同じように、設定したのですが。。。 http://www.futomi.com/lecture/apache/config.html 下のcgiは実行できます。 #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD>\n"; print "<TITLE>Apache</TITLE>\n"; print "</HEAD>\n"; print "<BODY>\n"; print "<H2>Welcome to my computer, Apache Server!</H2>\n"; print "</BODY>\n"; print "</HTML>\n"; しかし、下のcgiは実行できません。htmlファイル、cgiファイル共に、あるホームページからコピペしたので、間違いないと思います。ここではhtmlファイルは書きませんが、以下のURLです。 http://www2j.biglobe.ne.jp/~apollo/server/apacuse.html #!/usr/local/bin/perl $countfile= "count.dat"; open(IN, "< $countfile"); $count = <IN>; close(IN); $count++; open(OUT,"> $countfile"); print OUT $count; close(OUT); print "Content-type: text/plain\n\n"; print $count;

    • ベストアンサー
    • CGI
  • 掲示板(CGI)設置でApacheの意味と使い方を教えて下さい。

    下記掲示板「めぐあい掲示板」を設置しようとしたのですが、Apacheの意味やインストール方法がわかりません。 めぐあい掲示板 [MI_BBS] V4.60のダウンロードファイルに含まれてるマニュアル(mi_bbs.txt)の119行~150行までの意味が全くわかりません。例えば「/usr/binにシンボリックリンクを作成する」の意味がわかりません。 http://www.megumi-island.net/cgi.html#crypt 当方、Apacheを使わない?掲示板やその他のCGIの設置はそこそこ経験がありますが、/usr/local/apache/を作成する方法が全くわかりません。 教えて下されば幸いです。 ちなみにディレクトリの作成とパーミッションの意味と設定方法はよくわかります。 なお、サーバーの環境は/usr/bin/perlです。 /usr/local/apache/ | |--- cgi-bin/ (701) 【スクリプト格納ディレクトリ】 | |--- htdocs/ (701) | | | |--- bbs_data/ (777) 【データファイル格納ディレクトリ】 | | | +--- bbs_file/ (733) 【添付ファイル格納ディレクトリ】 | +--- secret/ (701) | +--- bbs_pass/ (777) 【パスワードディレクトリ】

  • cgi-binディレクトリ.............

    私のサーバーでは今までANHTTPDを使っていたのですが、apacheでもやってみようと思いまして、apacheに入れ替えたのですが、今まではcgi-binディレクトリ以下に掲示板のアップロードの画像やhtml・swfファイルなどをいっしょに入れていたのですが、apacheに入れ替えるとそれらのファイルがアクセス権がないと言われ観覧できません。 ANHTTPDと同様にcgi-binディレクトリ以下でも画像やhtmlなどを見れるようにするにはどうすればよいでしょうか? アドバイスよろしくお願いします。 (サーバーOSは WINDOWS XPです)

  • CGIの最初の記述

    つい先日、CGIをテキストエディタで開き編集をしていたところ最初にPerlの場所を示すパスらしきものが記述されていました。#!/usr/bin/perlみたいなのです。 そこで質問なのですが、/usr/bin/perlとはどこを示しているのでしょうか? 私、ウィンドウズPCでWWWサーバーを開設しておりますのでやはり気になってしまいます。それと言うのも、Apacheというソフトで開設しているのですがそのソフトでCGIを動かそうとすると、動かしたいCGIプログラムの最初の記述である/usr/bin/perlを私のサーバーのPerlをインストールしているフォルダへのルートに書き換えなくてはCGIが動かないからなんです。大変困っております。どうか、皆様私にお力をお貸し下さい。

    • ベストアンサー
    • CGI
  • CGI設置時に500エラーになります

    CGIを設置しようとしたところ、500 Internal Server Error になります。 共用サーバーIDを使用しています。 CGIファイルは「cgi-bin」の中に入れています。 たとえばこんな簡単なCGIでテストしたのですが、500 Internal Server Errorになってしまいます。 ↓ #!/usr/local/bin/perl print "Content-type: text/html \n\n"; print "Hello"; #!/usr/local/bin/perlを #!/usr/bin/perlにしても結果は同じです。 (サーバーの指定は#!/usr/local/bin/perl) パーミッションは755にしています(705に変えてもダメでした)。 CGIファイルの改行コードはLFにしており、テキスト(ASCII)モードでアップロードしています。 それでも500 Internet Server Errorになります。 サーバーではエラーログが見られないのでみなさんにお聞きしたいのですが、他にどんな原因が考えられるでしょうか?

専門家に質問してみよう