• ベストアンサー

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>

  • airon
  • お礼率85% (12/14)

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

  • ベストアンサー
  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.2

apache は、httpd.conf を明示的に実行していくだけですから、別に記述場所の上下は問わないと思います。 ただ、aliasを貼るのは、 <IfModule mod_alias.c> ・・・・・・・・・・ </IfModule> の間なので、おそらくそれより下の貼ったのではないでしょうか?

airon
質問者

お礼

またまたのお返事ありがとうございます。 > ただ、aliasを貼るのは、 > <IfModule mod_alias.c> > ・・・・・・・・・・ > </IfModule> > の間なので、おそらくそれより下の貼ったのではないでしょうか? 当初の設定では、デフォルトのすぐ下に記述しておりました。 もちろん、</IfModule> は設定内容の後に宣言しておりました。 自分でも不可解です。 今の設定では、 ScriptAliasの宣言を httpd.confに <Directory "/hogehogedir/" > の設定をaccess.confに記述 しております。 原因について、もう少し調べてみます。 ありがとうございました。

その他の回答 (1)

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.1

>さらに実行出来るディレクトリを追加してあげる場合 >httpd.confのScriptAliasを >手順的に追加するだけで出来るのでしょうか? その通りです。 <Directory "/home/test/testdir"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> これでOKだと思います。

airon
質問者

お礼

早速の回答ありがとうございました。 上記のとおりできたのですが、ちょっと気になることがありました。 自分が行った設定が悪かったのかどうかわからないのですが、 httpd.confに記述する際、デフォルトの ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/" より後に記述した時はうまく動作しなかったのです。 デフォルトより先に追加するディレクトリを宣言してあげないと いけないのでしょうか。 すみませんがよろしくおねがいします

関連するQ&A

  • CGIスクリプト 保存用ディレクトリ

    ApacheというWWWサーバーでは、srm.confというファイル内に  ScriptAlias /cgi-bin/ /usr/local/www/cgi-bin/と記述し、かつaccess.confというファイル内に、 <Directory /usr/local/www/cgi-bin> </Directory> という記述を行うことで、/usr/local/www/cgi-bin/というディレクトリがそのCGIスクリプトの保存用ディレクトリになります。 と書いているのですが、どういうことかよくわかりません。srm.confというファイルはあらかじめ、パソコンにはいっているのでしょうか? ScriptAlias /cgi-bin/ /usr/local/www/cgi-bin/と記述しと書いているのですが、何で記述したらいいのでしょうか。 すいませんが、教えてください。

  • cgi-binディレクトリ内のhtmlを有効にしたい

    度々お騒がせしております。 本日は、Apacheの設定について 伺いたく投稿させていただきました。 apacheの設定を終え、 一通り動作するようにできたのですが、 cgi-binディレクトリに置いたhtmlや jpg,gifといったcgi以外のファイルが 表示されません。 httpd.confによる cgi-binディレクトリの設定でどうにかなるものと思い、 色々調べてみたのですが、 いまいち設定方法がわかりません。 以下、私の環境です。 Apacche 1.3.20 htmlディレクトリ /var/www/html/ (775) cgi-binディレクトリ /var/www/html/cgi-bin/ (775) 現在のcgi-binディレクトリの設定 ScriptAlias /cgi-bin/ "/var/www/html/cgi-bin/" <Directory "/var/www/cgi-bin"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> 以上、どうかよろしくお願いいたします。

  • httpd.conf内ScriprAlias設定に関して

    何時もお世話になります。 現在APACHE2でCGIの設定をしております。 過去の質問などを色々と読んでおりますが、ScriptAliasの設定で判らない部分がございます。 一つのディレクトリ内のcgi-binでは動くのですが、複数のディレクトリで動かそうとすると、ソースが表示されてしまいます。 複数のディレクトリ内でそれぞれCGIを動かす為の設定はどの様にしたら宜しいのでしょうか・・・? 現在 ScriptAlias /cgi-bin/ "usr/local/apache2/cgi-bin/" <Directory "home/hoge1/cgi-bin/" Options +ExecCGI </Directory> <Directory "home/hoge2/cgi-bin/" Options +ExecCGI </Directory> となっております。 それぞれにScriptAliasのパスを書かないとダメ?と思い、 デフォルトを切って ScriptAlias /cgi-bin/ "/home/hoge1/cgi-bin/" ScriptAlias /cgi-bin/ "/home/hoge2/cgi-bin/" 等を付けたり切ったり、何度かパタンを試しましたが巧く行きません。 Aliasの考え方が間違って居るのでしょうか・・・? ご指導の程、お願い申し上げます。

  • 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の設定

    いつもお世話になっております。 各バーチャルドメイン内で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

  • 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プログラムの実行

    自宅で、linux+apache2の環境です。 apacheで HTML本体のルートディレクトリは:  DocumentRoot->/home/www/ CGI実行可能のディレクトリは: ScriptAlias /cgi-bin/ -> /home/CGI/ と設定されています。  質問は、/home/www/index.htmlに /home/CGI/test.cgiを実行したいとき、どう宣言すれば よいでしょうか。  できれば、LAN外も、LAN中でも使えるために、相対バスを使いたいです。

    • ベストアンサー
    • CGI
  • cgiの設定方法

    はじめまして、自宅でサーバーを立てようとしているのですが、つまずいてしまったので力を貸してください。 環境はRedhat9.0(?)、apache2.054を使用しています。 cgi自体はネットから落としてきた物を手始めとして使用してます。 /var/www/にcgi-binを作成、そこにcgiファイル等を格納しています。 cgi、perlファイルは705 ログファイルは606 ロックファイルは707にパーミッションを設定しています。 httpd.confは ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" AddHandler cgi-script .cgi .perl <Directory "/var/www/cgi-bin"> allowoverride none options execcgi order allow,deny allow from all </directry> 上記のように設定しています。 HPを表示させようとすると 「InternalError」と表示され、先に進みません。 このサイトを検索し、アスキーモードで転送も行って見たのですが。。。 どなたかCGI設定方法をご教授お願いいたします。

  • NFS経由ではcgiの実行はできない?

    NFS経由ではcgiの実行はできない? NFSでマウントしたディレクトリへのアクセス(具体的にはcgiの実行)を試しています。 host1とhost2(両方とも、OSはCentOS5)を作っており、 host1に/home/cgi/sample.cgiがあり、/etc/exportsでhost2に対してexportしています。 host2にはApacheがインストールされています。 host2でhost1の/home/cgiを/www/cgiとしてマウントしています。 host2で、httpd.confには ScriptAlias /cgi-bin/ /www/cgi/ と記述しています。そして、 http://localhost/cgi-bin/sample.cgi とすると、うまくcgiが実行されません。 一方、host1でApacheをインストールして同様の設定を施して、 http://localhost/cgi-bin/sample.cgi を実行しましたらうまくcgiが実行できました。 NFSでマウントしたcgiなどのスクリプトなどは実行できないものなのでしょうか?

  • ユーザー毎のディレクトリでCGIを設置

    ユーザー毎のディレクトリでCGIを設置可能にしようとしているのですが、うまくいきません。 教えて下さい。 【環境】 Apache/2.0.40 Red Hat Linux 8.0 【httpd.confの設定抜粋】 DocumentRoot "/home/homepage/public_html" <Directory /home/homepage/public_html> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> <IfModule mod_userdir.c> UserDir public_html </IfModule> <Directory /home/*/public_html> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> #ScriptAlias /cgi-bin/ "/home/homepage/public_html/cgi-bin/" 【.htaccessの設定】 AddHandler cgi-script .cgi Options +ExecCGI 以上のような設定で #!/usr/bin/perl print "Content-type: text/html\n\n"; print "hello"; こんなCGIをつくって実行してみました。 /home/homepage/public_html/cgi-bin/においたものはうまくいくのですが /home/user/public_html/cgi-bin/においたものはエラーになってしまいます。 エラーの内容は↓のとおりです。 Server error! The server encountered an internal error and was unable to complete your request. Error message: Premature end of script headers: hello.cgi If you think this is a server error, please contact the webmaster Error 500 perlのパスは間違ってないし、パーミッションも755にしてあります。 どうすればいいのか分からず困っています。 どこを調べれみればいいのかだけでも教えていただけると助かります。 よろしくお願いします。