ベストアンサー cgiで拡張子.cgiと拡張子.plの違いってなんですか? 2005/03/07 17:52 標記の違いはなんでしょうか? 私の使っているサーバがどうも.plしか対応しておらず、困っています。もし、cgiのスクリプトを変形して使えるのであればその方法も教えていただけると助かります。 みんなの回答 (2) 専門家の回答 質問者が選んだベストアンサー ベストアンサー hikomin ベストアンサー率63% (40/63) 2005/03/08 13:55 回答No.2 普通のウェブサーバでは、.cgiはCGIプログラムを見分ける為に使います。つまり、使用言語に関わらず、CでもPerlでもPHPでも、『CGIで』動かすなら.cgiを判断基準にする場合が多いです。これはサーバの設定次第なので、もし設定で.plになっているだけなら、PerlだろうとCだろうと.plで動くと言う事です。(但し、Perl以外の動作環境があるかどうかはサーバ次第です。) また、普通のウェブサーバでは、.plはPerlコードをウェブサーバが直接解釈する時に使ったりもします。これはCGIのように外部プロセスを起動するのではなく、mod_perl等を用いてウェブサーバ内で解釈してしまうものです。サーバにmod_perlがインストールされている事が前提です。 前者であれば、配付されているCGI等も.cgiを.plに変えて、後は普通に設置すれば動くのがほとんどでしょう。(動かないとすれば別の理由が有力かと思います。)後者であれば、場合によっては若干手を加えなければならないかもしれません。 質問者 お礼 2005/03/08 23:53 なるほど、どうも少しうまくいかない場合があったのですが、Perlに入っているモジュールなどの関係ということなんですね。 ありがとうございます。これで安心して困ることができます。:-) 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 その他の回答 (1) Ethersky ベストアンサー率71% (168/235) 2005/03/07 18:27 回答No.1 「作者側の都合」というか.cgiは本体等で.plは本体が使うモジュール等のライブラリとしてそれらを区別する意味で付けられている場合がほとんどです。(Perlの場合) 他に意味はありません。 有名なjcode.plも日本語文字コードを変換するためのライブラリ、つまり”モジュール”ですからこのように.plにされています。 元々、.plはPerlスクリプトの拡張子として使われてきたものですので、CGIとしてPerlスクリプトを使うときは.cgiという拡張子に変えるというのが習慣というか世間一般で皆がそうしているからそうしてるということです。 ですから、サーバーの運営側がCGIの拡張子を.plにしろといっているのならそれに従って.plに拡張子を書き換えれば済む話です。 質問者 お礼 2005/03/08 23:57 ありがとうございます。 基本は書き換えればなんとかなる!ということでいろいろやってみたいと思います。 すぐに回答をいただいて、実際にやってみよう!と元気をもらえた気がします。ありがとうございます。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発CGI 関連するQ&A c&c++, cgi, pl, ico, swfのファイルを開くには? 最近HPを作り始めました。 java appletを入れたいのですが、ダウンロードしてきたc&c++, cgi, pl, ico, swfなどのファイルが開けません。windows95を使っています。scriptの方は問題ないのですが。何かインストール必要があるのでしょうか?何もプログラミングのことなどわからないので簡単に教えてください。サーバーはCGIに対応しています。 'cgi-lib.pl'などのファイルの位置は? Perlの基本的な質問ですが、cgi-lib.plやjcode.plは どのディレクトリに入れれば自然でしょうか? 私はLinuxとWindowsの両方にPerl5.6を入れておりまして、今までは相対パスによって、スクリプトの近くに置いていましたが、ディレクトリ(フォルダ)が変わるごとに設定しなおしで面倒になってきました。 WEBでもレンタルサーバーなど利用したことは無いんですが、このような基本ライブラリは、require 'cgi-lib.pl';で呼び出して?いると思いますが、 しかるべき位置にこのファイルが無いとだめだと思います。ご教授ください。 CGIでjcode.plを読み込めなくなりました さんざん検索をかけて色々試したのですが、どうしても解決できず どなたかご存知のかた、教えてください。よろしくお願い致します。 つい昨日までちゃんと動いていたCGIが突然 「jcode.plがありません」 と訴えてきました。 4月にサーバーを乗換え丸2ヶ月、問題なく動いていたのに 突然です。何がなんだか分かりません。 もちろん、このCGIに関わるファイルは一切いじっておりません。 自分なりに検討した結果 引っかかっているのは以下のコード # 漢字コード変換ライブラリを読み込む if (-f "jcode.pl") { require "jcode.pl"; } else { &errexit("jcode.plがありません。\n"); } -略- &jcode'convert(*tmp, $kcode_cgi); このふたつです。jcode.plを読み込めない為にもれなく後出の呪文が効かないんだろうなという事は推測しているのですが。 このためフルパスでも試しましたが変化なし。 この読み込みをしなければ、CGIは取りあえず表示します。 なので、日本語変換プログラム以外は正常に動作しているようです。 どなたか同じような経験の有る方いらっしゃいませんか? アドバイスよろしくお願い致します。 ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム cgi.pmとcgi-lib.pl こんばんは。 cgi-lib.plを引用したCGIが動かないので、cgi.pmでためしにやろうと思っています。 そこでひとつ調べてもわからないのですが、cgi-lib.plのReadParseでは%inにフォームで送信したデータが全て入るのに対し、cgi.pmではいったいどこに全てのデータが格納されているのでしょうか?要素ごとに取り出す方法は調べることができましたが、配列ごとまとまって入っているところがわかりません。 ご存知のかた教えてください。よろしくお願いします。 cgi-lib.plのReadParse関数 あるパールからcgi-libを呼び出して、ReadParse関数を使おうとするとInternal Server Errorがでてしまいます。 パールの中身は #!/usr/local/bin/perl require 'cgi-lib.pl'; require 'jcode.pl'; &ReadParse(*in); です。 そこで3行目と5行目の行頭に#をつけて飛ばすとパールは正常に動きます。 これってcgi-lib.plのReadParse関数がいけないんでしょうか? ダウンロードしたまま何も変更していないのに..... ちなみにサーバーのパールのバージョンは5.004のようです。 CGI.pmとcgi-lib.plの差異について・・・ formで送信したデータをCGI.pmで受け取った場合と、 cgi-lib.plで受け取った場合に差異があるのでしょうか? cgi-lib.pl内で「\0」を組み込む処理があるのが気になります。 .plの拡張子のファイルについて .plの拡張子のファイルって何に使うのでしょうか? CGIから呼び出して使うのでしょうか? 初心者で馬鹿な質問かもしれませんが、お願いします。 「.pl」ファイルはサブルーチンのようなものなのですか? 掲示板スクリプトなどを落としてファイルを見ると、「.pl」というファイルがたまにあります。 これはサブルーチン的なやくわりがあるのですか? もしそうなら、どうしてわざわざ「pl」に書き分ける必要があるのでしょうか。すべてひとつの.cgiに書けばいいのに。 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 の設定の問題かと思っています。 ちょっとカテゴリーが違うかもしれませんが、よろしくお願いします。 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 のコメント化。そのほかはデフォルト。 pl a.cgiファイルがあるとします。 同ディレクトリにa.plがあるとします。 a.cgiにあったものをa.plの関数(サブルーチン)に移し a.cgiで呼び出したら負荷は軽減されますか? 文才ないのでわかりにくかったらこっち見てください。 a.cgi(HTMLソースが1000行あるとします) それを全部消し、a.plに移します。 そのa.plをa.cgiで呼び出したらかわりますか? cgi-lib.plの&ReadParse();の()の中 cgi-lib.plのReadParseを使う時、 require 'cgi-lib.pl'; &ReadParse(*---); こんな風に書きますよね? ()の中はどういう意味なんでしょうか? 何でもいいんですか? AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム CGIを有効にしたい 初心者なのでCGIを動かす方法がわかりません。 自分で質問ページや同じエラー出てるものなどを調べ、 色々やってみましたが動きませんでしたので質問させて下さい。 <状況> ・WADAXのレンタルサーバを使用 ・お問い合わせフォームの記述は、 form id="form1" action="contact.cgi" method="post" onSubmit="return check();" ・同じ階層にあるcontact.cgiの属性の変更で700に設定 ・同じ階層に.htaccessをUPし、その内容は、 Options +ExecCGI AddHandler cgi-script .cgi .pl ・contact.cgiの一行目は、 #! /usr/local/bin/perl ・403エラーだったのが色々いじったら500エラーになった。 その他確認することはありますでしょうか。 お問い合わせフォームから送信を押した後が表示されないので困ってます。 わかる方、どうぞよろしくお願いします。 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> 記述は合ってると思うんですが……どこが間違ってるのでしょう? HTMLからのpl実行 htmlのタグに下記のように記述し(test.html) <FORM METHOD="POST" ACTION="http://192.168.100.100:8080/cgi-bin/test.pl"> cgi-binにあるtest.plを実行したいのですが、 test.plのコードの中身がブラウザに表示されてしまいます。 httpd.confの設定は下記のように設定してあり、 権限もtest.pl,test.htmlともに755で設定しています。 ** ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/" <Directory "/usr/local/apache/cgi-bin/"> AllowOverride None Options None Order allow,deny Allow from all </Directory> AddHandler cgi-script .cgi .pl .rb cgiとplとpm 掲示板ソースをダウンロードするとplやpmという拡張子のものがありました。中身はPerlでした。 拡張子の使い分けを教えてください。 適当に4つのルールを書いてみましたので、間違っていたり、追加するルールがありましたから教えてください。 1 ブラウザがそれ自身にアクセスし、ブラウザのアドレスバーに表示させるならcgiにするべき。 2 Perlのpackageの機能を使うなら、パッケージファイルはplかpmでなくてはならない。 3 Perlのrequireの機能を使うなら、その外部ファイルはplでなくてはいけない。 4 Perlのuseの機能を使うなら、その外部ファイルはpmでなくてはならない。 xyzzyで拡張子がcgiやpl, pmのファイルを開くとタブが効きません。 xyzzyで拡張子がcgiやpl, pmのファイルを編集しているのですが、そのファイルを開くとタブが効きません。 新規で開いたファイルはタブが効きますが、xyzzyでどのように設定すればよいのでしょうか? CGIファイルとplファイル 私はウィンドウ2000を使用していますがCGIファイルとplファイルを開こうとすると『ファイルを開くアプリケーションの選択』が出てしまい開くことができません。 何がいけないのでしょうか?教えてください。 別サーバーのcgiを実行させる あるサーバーで動作しているcgiスクリプトから、別のサーバーに置いてあるcgiスクリプトを実行させる方法はあるでしょうか? require 'http://…/…/test.cgi'; としても実行することは出来ませんでした。 googleで検索したところrequireではURL指定ができないと解説しているサイトがありましたので、requireを使わずに、(CGI.pm等の標準モジュール(?))なども使わないで他のサーバーに設置したcgiを動作させる方法があれば、教えていただきたいです。 PL/pgSQLの直接実行 PL/pgSQLのことで教えてください。 これまで SQL Server を使っていましたが、PostgreSQL に移行しています。 Npgsql で、VB.Net から接続しようと思っています。 PL/pgSQLで、ストアドファンクションなどを定義するのではなく、PL/pgSQLスクリプトを 直接実行することはできないのでしょうか? SQL Server では、T-SQLのスクリプトを直接実行できました。 例えば ManagementStudioのクエリ実行画面にスクリプトを入力して実行したり、 VBからだと、SqlCommand の CommandText に T-SQLを書いて実行したり、という ことです。 pgAdminIIIのSQLエディタや、NpgsqlのNpgsqlCommandで同様のことをやろうとすると エラーになります。 何か良い方法があるのでしょうか? 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
なるほど、どうも少しうまくいかない場合があったのですが、Perlに入っているモジュールなどの関係ということなんですね。 ありがとうございます。これで安心して困ることができます。:-)