• 締切済み

サイト構築について

現在サイトを作ろうと思っているのですがなかなかうまくいきません。 行おうとしているのは、あるドメインを持ってうちのサーバーにアクセスしたら必ずある一つのプログラム(index.cgi)のようなものを通り、それぞれパスにあったものをrequireで.plファイルを呼び込み、テンプレートを表示するというものです。 簡単に言うと下記のような感じです。 1、アクセス→2、index.cgi→3、passに応じたplファイルを参照→4、plで指定されたテンプレートを開く 現在2までは可能なのですが、呼び込む段階で呼び込めて折らず、何が原因かわかりません。 非常に困っています。 どなたかわかる方がいらっしゃいましたご指導鞭撻のほどよろしくお願いします。

みんなの回答

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

>documentrootはわかるんですが、server_pathはどこで設定するんでしょうか?  環境変数{'SCRIPT_FILENAME'}に、使用しているCGIの、コンピューター上のパスがあるはずです。  例のものだと /cgi-bin/ENV_FORM.cgi です。 作成されているCGIのPATHは、これで分かりますよね。 /でsplitして、配列に入れればよいです。  それから、同じ数だけ引けば、分かる。  対象のplファイルのある場所は、telnetを使うか、telnet.cgi(探してください。)を使ってfindで探せば、PATHは分かるはずです。 / |-- home/ |   |-- index.cgi |   | |-- user |   |-- pl/ |   |   |-- abc/ |   |   |   |--cde.pl  もうすこし具体的なことがわかれば・・・

keeeeeeeen
質問者

補足

ご丁寧な回答ありがとうございます。 私がやろうとしているのは、上の図で言うとindex.cgiに強制的に全てのアクセスを集め、plディレクトリでパスに対応するプログラムを実行し、homeディレクトリのさらに下のディレクトリのテンプレートを表示するようにしたいということです。 プログラムファイルをhomeディレクトリ内に置くとうまく起動します。 warnでご指摘頂いた環境変数を出すとともにindex.cgiまでのルートがプリントされます。引数は渡していないのでquery_stringはありません。 こんな感じなのですが…。

全文を見る
すると、全ての回答が全文表示されます。
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

Document rootとserver pathが異なるのでは? 簡単なスクリプト書いて、PATH_INFOやQUERY_STINGSを書き出してみたら? サーバーにて、index file nmaeにindex.cgiが設定してあると、 http://domain.com/hoge/abc/def が要求されると hoge/abc/def がPATH_INFOに それと、 SCRIPT_FILE_NAMEやSCRIPT_NAME から、読み込みたいファイルのサーバー上のパスを計算して・・(HTTPサーバーのPATHとは違う)・・となるはず Enviroment Variable and FORM,COOKIE http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi/keeeeeeeen/yourPage?GoogLuk 参照!!

keeeeeeeen
質問者

補足

ORUKA1951さん回答ありがとうございます。 ディレクトリを同じところに移したらできるんですけど、異なるディレクトリで出来ないんです。 PATH_INFOはwarnで確認したら問題なく入っています。 documentrootはわかるんですが、server_pathはどこで設定するんでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 自宅サーバーの構築がうまくいきません。

    Linux初心者です。よろしくお願い致します。 webサーバーを公開しようとしているのですがうまくいきません。 OSはubuntuでapacheは2系です。 ルーターを介してindex.htmlをドメインで表示すること(http://ドメイン名)は可能なのですが、AddHandler.cgiにすると500エラーではじかれてしまいます。 以下はtail -fのコマンドで表示される文言です。 ・(2)No such file or directory: exec of 'ディレクトリ/AddHandler.cgi' failed ・Premature end of script headers: AddHandler.cgi 何が原因かわからないのでどなたご指導鞭撻の程よろしくお願い致します。

  • CGIROOMさんのデータベースでCSVファイルが読めません。

    カテゴリがデータベースではなく、CGIのようなので、移動しました。 CGIROOMさんの「簡易高機能検索専用データベース SJIS版 Ver 2.04」を使おうとしています。中田 昭雄さんのhttpd 1.42pを使ってオフラインでの動作を確認した後、以下のようにサーバに設置しました。 /┐  ├anon_ftp  ├bin  ├cgi-bin┐  |    ├database.cgi[755]  |    ├jcode.pl  |    ├onlyone.pl  |    └jtc.csv(CSVデータ)  |  ├conf  ├error_docs  ├httpdocs┐  |    ├index.html  |    ├area_1.html  |    ├(etc)  |  ├httpsdocs┐  |     ├html.htm(データ検索表示用)  |     ├html3.htm(データ検索表示用)  |  ├pd  ├private  ├statistics  ├subdomains  └web_users こうしたところ、「データファイルを開けません」と表示されて困っています。 パスの設定は 1.area_1.html <FORM action="../cgi-bin/jtc/database.cgi" method="GET"> <blockquote> 2.database.cgi # 初期設定 #◆ jcode.plまでのパス $require = './jcode.pl'; #◆ onlyone.plまでのパス $onlyonepl= './onlyone.pl'; #◆ データファイルまでのパス $SEEK{'default'} = './jtc.csv'; #◆ テンプレートファイル設定 $html{'default'} = '../../httpsdocs/jtc/html.htm'; $html{'list3'} = '../../httpsdocs/jtc/html3.htm'; です。CSVの格納場所が悪いのか、パス設定が悪いのか、ご指摘お願いしたくよろしくお願いします。

    • 締切済み
    • CGI
  • htaccessファイルの利用について

    今回、アクセス制限を作成しています。 .htaccessファイルの内容は AuthUserFile /home/sites/home/web/cgi/data/.pass AuthGroupFile /dev/null AuthName "Login Test " AuthType Basic require valid-user を設定しています。 暗号化された.passファイルを設置しています。 しかし、.passには無いユーザーとパスワードでアクセスが可能になってしまいます。 原因が全くわかりません。絶対パスの書き方もよくわかりません。 宜しく御願い致します。

    • ベストアンサー
    • HTML
  • apacheでhttpsによって外部からアクセスさせたい

    windowsserver2008でapache2.2.6を動かしてます。 httpd.confとhttpd-ssl.confを編集して、 LAN内から http://server/index.html https://server/cgi-bin/printenv.pl でアクセスできます。 外部から http://domain.jp/index.html でアクセスできるのですが、 https://domain.jp/cgi-bin/printenv.pl だと404エラーが表示されます。 サーバー上でnetstat -aすると、443はLISTENになってます。 外部からhttpsによるアクセスを可能にするために確認すべきこと、 あるいは、アクセスできる方法をご存じの方教えてください。

  • miniリストが設置できません

    プロフィール登録CGI「Miniりすと」が設置できません。 PCの初心者です。 特に下記の設定が分かりません。 ***************************************************** #-------------------------------- # ファイル・フォルダへのパス設定 #-------------------------------- # cgi-lib.plへのパス(同じフォルダならこのまま) require './cgi-lib.pl'; # jcode.plへのパス(同じフォルダならこのまま) $jcodepath = './jcode.pl'; # tool.cgiへのパス(同じフォルダならこのまま) $uppath = './tool.cgi'; # sendmailへのパス(フォームメール機能を利用する場合のみ) $sendmail="/usr/sbin/sendmail"; # 外部スタイルシートへのパス $stylepath = './style.css'; # このスクリプトの名前 $cgipath = './list.cgi'; # データファイル名 $datapath = "./data.dat"; # アップロードされた画像を保存するフォルダ(最後に「/」をつける) $imgdir = './img/'; **************************************************** どの様に設定すればよいのでしょうか? ホームページビルダーで製作したHPにUPしたいのですが… 出来れば手順を追って、ご指導ください。

    • 締切済み
    • CGI
  • CGIが・・・いったい何が問題でしょうか?

    皆様よろしくお願いいたします。 以下の構成のディレクトリをvar/www/htmlに置き localhost/auct/index.cgiとしてindex.cgiファイルにアクセスしようといたしたのですが、500internal server errorとなり(エラーログ; premature end of script headers; index.cgi)、アクセスできません。 index.cgiにアクセスするとstart.shtmlが開く設定になっています。 なお、簡単なCGIファイルを作りvar/www/htmlで動作させたところ正常に動作いたしました。 自分でもかなり調べたり、聞いたりしたのですが解決に至りませんのでどうかご助力お願いいたします。 ....├ [auct] ...........├ [ pl ] ...................├ [ lib ] ...................├ ap.cgi ...................├ category.cgi ...................├ cgi-lib.pl ...................├ comu.cgi ...................├ config.cgi ...................├ image.pl ...................├ index.html ...................├ jcode.pl ...................├ mail.cgi ...................├ mng.cgi ...................├ show.cgi ...................├ usr.cgi ...................└ wwwis.pl ...........├ auction.cgi ...........├ count_down.cgi ...........├ cron.cgi ...........├ index.cgi ...........├ master.cgi ...........├ search.cgi ...........├ start.shtml ...........└ temp.cgi 全てWindowsからasciiで転送してperlのパスも確認済み。 パーミッションはすべて755。 Windowsのapacheでは正常に動作。 httpd.confの設定; <directory "/var/www/html">のoptionsにExecCGIを追加。#addhandler cgi-script .cgi のコメント化。そのほかはデフォルト。

    • 締切済み
    • CGI
  • jcode.pl と &ReadParse()

    CGIファイルの先頭は #!/usr/local/bin/perl require './cgi-lib.pl'; require './jcode.pl'; &ReadParse(); という感じになっています。 ここでのの require は、日本語を使うためのもの だと思っています。合っていますか? &ReadParse() というのは何ですか? require と関係があるみたいです。 require を書かずに &ReadParse() を書くとCGIエラーになります。

    • ベストアンサー
    • CGI
  • 非常に見にくいです.....

    このジャンルであっているかどうか微妙ですが質問させていただきます。 よくフリーのCGIやPHPなどのテキストファイルをダウンロードしたとき、アップロード時に転送モードが悪かったのかどうか知りませんが、よく #!/usr/bin/perl↑↑require './jcode.pl';↑require './cgi-lib.pl';↑↑..................... のように改行部がすべて↑になってますよねぇ? もし「戻りページ」など設定しなければならない部分があったりする時は非常に見にくくやりづらいのです。 そこでこの上の例を自動で #!/usr/bin/perl require './jcode.pl'; require './cgi-lib.pl'; に書き換えてくれるようなソフトがあったら教えて下さい!!

    • ベストアンサー
    • CGI
  • 'cgi-lib.pl'などのファイルの位置は?

    Perlの基本的な質問ですが、cgi-lib.plやjcode.plは どのディレクトリに入れれば自然でしょうか? 私はLinuxとWindowsの両方にPerl5.6を入れておりまして、今までは相対パスによって、スクリプトの近くに置いていましたが、ディレクトリ(フォルダ)が変わるごとに設定しなおしで面倒になってきました。 WEBでもレンタルサーバーなど利用したことは無いんですが、このような基本ライブラリは、require 'cgi-lib.pl';で呼び出して?いると思いますが、 しかるべき位置にこのファイルが無いとだめだと思います。ご教授ください。

    • ベストアンサー
    • Perl
  • 特定のdirで発行したcookieを上のdirで参照できますか?

    特定のdirで発行したcookieを上のdirで参照できますか? クッキー発行では、PATHやドメイン等は設定しておらず、クッキー名とUserIDとPASSしか発行していないのですが、 PATHを設定した場合、クッキー値は、クッキーを生成したWebページ、同じディレクトリ内のWebページ、 同じディレクトリ内のサブディレクトリ内のWebページで参照が可能らしく、 省略時はCookie を設定したページのパス名になる。との事らしいのですが、 /A/a1/bbs.cgiへ認証した際に発行されたクッキー(クッキー名/ID/PASS)を /A/bbs.cgiで参照ってできますでしょうか。 上の階層である /A/bbs.cgi(同じCGIスクリプト)でクッキー情報を参照した場合、クッキー名だけが参照できている状況で困惑しています。 どなたか正しい情報をご掲示頂けませんでしょうか。宜しくお願い致します。

    • ベストアンサー
    • Perl