CGIプログラム修正についての質問

このQ&Aのポイント
  • CGIプログラムの修正に立ち往生しています。ショッピングカートを設置している最中で、特定の箇所の修正方法がわかりません。
  • 具体的には、mart_init.cgiというファイルをエディタで開き、指定された箇所を修正する必要があります。
  • 修正箇所は、実行スクリプトのURLの絶対パスと、データファイルとログファイルの場所を指定する部分です。
回答を見る
  • ベストアンサー

CGIのプログラムの修正に立ち往生。

ショッピングカートを設置している最中なのですが、いきなり立ち往生してしまいました。  以下のような説明がされていますが、よくわかりません。これは何をしたらいいのでしょうか?  詳しい方よろしくお願いします! 「mart_init.cgiを エディタ で開いて以下の箇所を修正します。(主要な変更箇所のみ) $script = 'http://www.xxx.xxx/mart/mart.cgi'; $order = 'http://www.xxx.xxx/mart/mart_order.cgi'; $admin = 'http://www.xxx.xxx/mart/mart_admin.cgi'; (各実行スクリプトのURLを絶対パスで記述します) $datfile = '/home/xxx/public_html/mart/mart.dat'; (データファイルを / から始まるサーバパスで指定します) $rawfile = '/home/xxx/public_html/mart/mart_raw.txt'; (商取引法のログファイルを / から始まるサーバパスで指定します)」

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 大変言いにくいのだが、もし仕事などで仕方なくやっているというので無ければ、設置は見合わせた方が良いと思う。  正直、それらの部分を見て何をしたら良いのか分からないのでは、設置できたとして万が一何か起こった時どうやって責任を取るのか大変な話になってしまう気がして恐いのだ。これが単なるチャットや掲示板ならどうでも良いが、ショッピングカートで注文を受け付けるというのはお金が直接絡まなかったとしても何かあったらごめんなさいでは済まない。  まぁ、私の個人的な意見は今述べた通りだが、決めるのは君自身だ。今回は見合わせてスキルアップを図るなり、えいやぁでどんと設置するなり、その辺は頑張ってくれ。 $scriptは恐らく自分自身を指すものだろう。例えば、君がこれを設置したい場所がhttp://www.torotoro2.net/webmart/とすると、http://www.torotoro2.net/webmart/mart.cgiにするのだろうな。$orderはそのまんま注文をするためのスクリプトだと考えられるので、同じ場所に設置するならhttp://www.torotoro2.net/webmart/mart_order.cgiを入れてやれば良い。$adminは管理者モードのスクリプトだろう。これも$orderと同じようにすれば良い。  下の二つは、君が所有しているLinuxなりUNIXなりのサーバによりけりなので具体的な場所は挙げられないが、もしスクリプトとは別に設置できるのであれば、/var/webmart/などのようにWebのリソースとは別に保管した方が良いだろうな。 具体的な話はできなかった。何か参考になれば良いが。

torotoro2
質問者

お礼

ご指摘ありがとうございました。そう言われると確かにそうですね。お金のお取り引きとなると後で問題なったらゾーっとします。  そこまで考えなかったのが甘かったです。 一応、説明を読んで何となくわかったのですが、まだまだ知識不足ということで今回は有料でもいいからレンタルをしたいと思います。大変参考になりました。  

関連するQ&A

  • cgiなんですが....

    http://www.kent-web.com/data/mart.html cgiの買い物かごシステムなのですが、下記のディレクトリ構成例のpublic_htmlってなんでしょうか?自分のレンタルサーバーではトップページ を表示するにはftpソフトでつなぐとhttpdocsってホルダにindex.htmlをいれますが、そこにpublic_html って書いていれれば、いいのですかね?cgiつくりにダウンロードしたものはmart.cgi,mart_order.cgi ,mart_admin.cgi mart_init.cgi ,mart.dat ,mart_raw.txt mart.html なんですが、public_html っていうのがみあたりません。 public_html のフォルダの中にホームディレクトリ?がある構成に見えるし、なんでしょう?mart / mart.cgi [755] mart_order.cgi [755] mart_admin.cgi [755]mart_init.cgi [644] jcode.pl [644]mart.dat [666] mart_raw.txt [644]cgiのフォルダにpalのパスかえたり、してパーミッション設定してあげれば、良いのでしょうか?絵では下のような説明になっています。 【ディレクトリ構成例】 public_html / (ホームディレクトリ) | +-- mart / mart.cgi [755] mart_order.cgi [755] mart_admin.cgi [755] mart_init.cgi [644] jcode.pl [644] mart.dat [666] mart_raw.txt [644]

    • ベストアンサー
    • CGI
  • web mart cgi

    http://www.kent-web.com/cart/mart.html に書いてあるように カゴCGIスクリプトURL ( http://から記述 ) $script = 'http://www7b.biglobe.ne.jp/~blythe/mart/mart.cgi'; # 注文CGIスクリプトURL ( http://から記述 ) $order = 'http://www7b.biglobe.ne.jp/~blythe/mart/mart_order.cgi'; # 管理CGIスクリプトURL ( http://から記述 ) $admin = 'http://www7b.biglobe.ne.jp/~blythe/mart/mart_admin.cgi'; # データファイル( / から始まるフルパス ) $datfile = '/public_html/mart/data/mart.dat'; # 「特定商取引に関する法律」の表示内容 # → 引用: http://www.jadma.org/guid_mai/guidelin.html $rawfile = '/public_html/mart/data/mart_raw.txt'; # 在庫管理を行う (0=no 1=yes) $stock = 0; # 在庫ファイル( / から始まるフルパス ) $stkfile = '/public_html/mart/data/stock.dat'; # ファイルロック形式 # → 0=no 1=symlink関数 2=mkdir関数 $lockkey = 0; # ロックファイル名 $lockfile = '/public_html/mart/lock/mart.lock'; やりましてCheck Mode 在庫データパス: OK 在庫データパーミッション: OK 登録データパス: OK 登録データパーミッション: OK sendmailパス: OK バージョン: Web Mart v1.7 できましたが http://www7b.biglobe.ne.jp/~blythe/mart/mart_admin.cgi 管理者モードには入れないのです。 errors Can't locate ./lib/jcode.pl in @INC (@INC contains: /usr/local/pkg/perl/5.8.7/lib/i386-linux-thread-multi /usr/local/pkg/perl/5.8.7/lib /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl .) at mart_admin.cgi line 9. どうやればいいのですか?

  • 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が使えないのはなぜ?

    こんにちは。 現在Redhat8を使用して、サーバーを作っています。apacheを起動してサイトが表示できるまではOKだったのですが、CGIを使う段階でつまづいています。 httpd.confは様々なサイトを見てそのとおりに編集したのですが、いざCGIを起動するとServerError!となります。Error_logを見ると↓のような妙な文章でした。Permissionなら分かるのですが、、これは何でしょう。 Premature end of script headers: XXX.cgi CGIの先頭のPerl指定は #!/usr/bin/perl にしてあります。何が悪いのか分からず途方にくれています。何かチェックする部分があればどうかご指摘ください。お願いします。パーミッションの設定は完了しており、CGIスクリプト自体も先頭以外はいじっていません。 RedHat8.0 Apache2.0 /home/www/html にHTMLファイル /home/www/cgi-bin にCGIスクリプト ----------------以下関係のありそうなhttpd.confの抜粋 ScriptAlias /cgi-bin/ "/home/www/cgi-bin/" <Directory /home/www/cgi-bin> Options ExecCGI Order allow,deny Allow from all </Directory> AddHandler cgi-script .cgi

  • CGIでショッピングカートの設置方法

    こんにちは 今CGIを使ってショッピングカートの 設置をしているのですが なぜか表示されないのです。 最初このやりかたで表示されたので 間違っているのかわからなくなってしまって・・ ディレクトリの入れ方合ってると思うのですが・・ public_html (ホームディレクトリ) # | # +-- cart / cart.cgi # | cartini.cgi   # | admin.cgi   # | data1.cgi # | data2.cgi   # | raw.txt   # | jcode.pl   # | # +-- lock   / こう書いてありました。 パールの指定も合っていると思います。 (一度表示されたので) 最初はモードチェックも出来たのに できません。 どうなっているのか困っています。 どうぞよろしくお願いします。

  • 私の作ったCGIスクリプトを見てください。どこが間違えていますか

    アクセスありがとうございます。 Red Hat Linux8.0でサーバを構築してCGIスクリプトを実行しようとしているのですが、どうもうまくいきません。 私が作成したCGIスクリプトは次のようなものです。 ファイル名「first.cgi」 #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD>\n"; print "<TITLE>First CGI</TITLE>\n"; print "</HEAD>\n"; print "<BODY>\n"; print "文字を表示するCGIです。\n"; print "</BODY>\n"; print "</HTML>\n"; そして文字コードを「EUC」、改行コードを「LF」に変換しサーバにアップロードしました。 その後SSHでサーバにログインし $ chmod 755 /home/burn/public_html/first.cgi と「first.cgi」に実行権限を追加し $ /home/burn/public_html/first.cgi と作成したCGIスクリプトをテストしてみたのですが : bad interpreter: No such file or directory とエラーメッセージが表示されてしまいます。 「そのようなファイルやディレクトリはありません」というような意味でしょうか。 しかし、そんなはずはないと思います。 $ ls /home/burn/public_html first.cgi と「ls」コマンドを実行すれば「first.cgi」が表示されるのですから。 他に何かする必要があるのですか。 この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にしてあります。 どうすればいいのか分からず困っています。 どこを調べれみればいいのかだけでも教えていただけると助かります。 よろしくお願いします。

  • apacheのCGI設定について教えてください。

    CGIの勉強のために、古いパソコンに fedora core 4 をインストールしてapache でローカルのテスト用サーバーにしようとしています。 /var/www/html に設置した簡単な perl CGI は動くのですが、同じものをユーザーのホームディレクトリに設置すると、internal server error になってしまいます。 ***** 以下 httpd.confの抜粋です。***** #UserDir disable UserDir public_html <Directory /home/*/public_html> AllowOverride All Options Includes ExecCGI FollowSymLinks SetHandler cgi-script </Directory> AddHandler cgi-script .cgi .pl ************************************** サーバーのエラーログを見ると Premature end of script headers: test.cgi となっています。htmlをprintしているだけのスクリプトで、/var/www/html では動くので、apache の設定の問題かと思っています。 ちょっとカテゴリーが違うかもしれませんが、よろしくお願いします。

    • ベストアンサー
    • Perl
  • CGIからの絶対パス

    こんにちは。 perlのCGIでファイルをオープンする際のパス指定で悩んでいます。 cgiとは別のディレクトリにあるファイルをオープンしたいのですが、 このとき、 open(IN,"/home/XXX/YYY/ZZZ.dat"); というふうに絶対パスでオープンしようとすると、オープンできません。 一方、 open(IN,"../../../home/XXX/YYY/ZZZ.dat"); といった感じに相対パスにすると、オープンできます。 ファイルの場所は/home/XXX/YYY/ZZZ.datで間違いありませんし、 cgiとしてではなく、シェルから直接cgiプログラムを起動すると、 絶対パスでもオープンできます。 これはいったいどういうことが起こっているのでしょうか? ご存知の方、ご解説願えないでしょうか。

    • ベストアンサー
    • CGI
  • 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> 長文失礼しました。