Top logo02 Click to visit our sponsor

R1100R Everyday! 番外編 「Linux 環境設定な日々」

結局のところPCって、それを使って仕事(遊びでもいいや)をしている時間よりも、 「お世話」をしている時間の方が、かなり長いような気がする。 counter(since 2001/7/8)

>>> 2002年4月分
Last-modified: Wed, 10 Apr 2002 04:31:43 JST
Powered by Tomsoft Diary System 1.4.2

Prev 2002/4 Next
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
日記才人の投票ボタンです。

[最新版] [一覧] << == >>

2002/4/6(Sat)

SSIにてPerlスクリプトに引数を渡すには?

アクセス制限をかけた サイトのアクセス記録を得るために、こっそり プログラムを動かしている。

<!--#exec cgi="./log/log.cgi"-->という一文を入り口の index.html に埋めこんで ログをとっているんだけど、別のページにも埋めて、それぞれのページが どのくらい読まれているのかを知りたくなってきた。

そこで、log.cgi に引数を渡し、ログにどのページが読まれたのかの記録を つけ加えようと思うわけだ。

<!--#exec cgi="./log/log.cgi?page1"-->とでもやれば、Perl側で $page = $ENV{'QUERY_STRING'}; とすることで、$page="page1"になるのではないか、 と思ったら、大間違いデシタ。恥ずかしい。こういう構文は許されてないみたい。

許されてないっつーか、こういう場合は、

<!--#exec cmd="./log/log.pl page1"-->

というように#exec cmdで引数を渡すか、

<!--#set var="page" value="page1"-->
<!--#exec cgi="./log/log.cgi"-->

って、環境変数に代入してから、cgiを呼び出せばいいのです。

よくよく調べてみると、apacheの仕様では、

<!--#exec cgi="./log/log.cgi page1">

というように引数を渡すこともできるみたいなんですが、プロバイダーの設定で 引数が渡せないようになっていたり、apacheのバージョンの違いで、うまく 動かないようになってるようです。

ローカルで確かめてみると、<!--#exec cmd="./log/log.pl page1"--> このパターンだけがうまく動きました。ってゆうか、SSIを許可するため、 そのディレクトリに.htaccessを付け加えるとcgiが動かなくなったりして、 完全に「ワタシってタコよ。」状態。だめだ時間切れー、って感じ。

で、プロバイダにファイルを転送して、実験するんだけど、うまくいかない。

セキュリティの関係なのかな。もうすこし学習が必要なようだ。残念。

2002/4/9(Tue)

SSIにてPerlスクリプトに引数を渡すには?(解決編)

_ ひとつめ。

.htaccess によってcgiが動かなくなったり、SSIがうまく動かなくなったり した件については、こう書き換えたらオッケーだった。

Options Includes → Options +Includes

_ ふたつめ。

引数を渡すには、#include virtual を使う。たとえば、こんな感じ。

<!--#include virtual="./log/log.cgi?page_name"-->

Perl側では、

	  $page = $ENV{'QUERY_STRING'};
	  $page = $ENV{'PATH_INFO'} if(!$page); # QUERY_STRINGが無ければPATH_INFOで
          $page = $ENV{'page'} if(!$page); #set var=... で指定の場合。

こんな感じで引数を読む。 実際にログを見るには こちら


[最新版] [一覧] << == >> Another Diary