futomiアクセス解析CGIのリクエストレポートでタイトルが表示されないで、ドキュメントルートが異なるサイトのリクエストレポートのページタイトルを取得する方法を書きましたが、それでも、まだ完全ではありませんでした。
例えば、
http://blog.karakuriya.biz/developers/perl/
のように、index.html も何もなく、スラッシュ(/)で終わるURLの場合、ページタイトルが表示されません。
futomiアクセス解析CGIのリクエストレポートでタイトルが表示されないで、ドキュメントルートが異なるサイトのリクエストレポートのページタイトルを取得する方法を書きましたが、それでも、まだ完全ではありませんでした。
例えば、
http://blog.karakuriya.biz/developers/perl/
のように、index.html も何もなく、スラッシュ(/)で終わるURLの場合、ページタイトルが表示されません。
この私のサイトは、futomi 高機能アクセス解析CGI Standard版 Ver 4.0.1 でアクセスログ解析を行っています。
しかも、
からくり屋(本体)
からくり屋ブログ
Smartyをはじめよう!
MovableTypeでビジネスブログ構築
の4つのサイトを一括してログを取っている。
後の2サイトは最近全然更新してませんが・・・
ログ解析の画面で「リクエストレポート」という項目があり、どのページを何回アクセスされたか?という情報が表示されます。
ここには、ページタイトルとURLが表示されるわけですが、どうもうまく表示されない。
よくよく見てみると、からくり屋(本体)以外は全くタイトルが表示されていない。
そもそも、ページタイトルはどうやって取得しているのだろう?
Windows上で、Perlのプログラムを動かそうとしたら
The specified CGI application misbehaved by not returning a complete set of HTTP headers.
というメッセージが出る場合があります。
同じCGIをLinuxサーバでは全然問題なく動くのに・・・
Windowsの場合、Perlプログラム(CGI)の設置ディレクトリと、実行時のディレクトリが異なる場合があります。
これが原因です。
Perlの場合、ほとんどと言っていいほど、
require './jcode.pl';
を記述します。Linuxの場合は、CGIがあるディレクトリでそのCGIが動くわけで、同じディレクトリに jcode.pl を入れておけばいいのですが、Windowsの場合は、上記の理由により、CGIがどこか別のディレクトリで動く場合があります。とすると、jcode.pl は、その動くディレクトリに入れておかないとダメということになります。
そのディレクトリに入れれば、いいわけなんですが、Perlのプログラムの中で解決するとなると、プログラムの最初に
chdir("Perlのプログラムを設置したディレクトリ");
と書きます。ディレクトリは、例えば、C:/Inetpub/wwwroot/abc のように書きます。
これにより、このプログラムは指定したディレクトリで動き、正常に動作します。
次のサイトからActivePerlをダウンロードします。
http://www.activestate.com/Products/ActivePerl/
ダウンロードした、msiファイルをクリックしてインストールします。英語なのですが、「Next」を続けていけばインストールされます。
IISのルートフォルダがあるドライブにインストールされます。変更する場合は「Custom Setup」の画面で「Browse」ボタンをクリックして変更します。
次に「インターネット インフォメーション サービス」を起動して、既定のWebサイトのプロパティを開きます。
「ホームディレクトリ」タブの、アプリケーションの「構成」ボタンをクリックします。
「追加」ボタンをクリックして、アプリケーションの拡張子マッピングの追加/編集画面を開きます。
以下の2つを登録します。
実行ファイル名:C:\Perl\bin\perl.exe "%s" %s
拡張子:.cgi
動詞:すべての動詞
スクリプトエンジン:チェック
ファイルの存在を確認する:チェック
実行ファイル名:C:\Perl\bin\perl.exe "%s" %s
拡張子:.cgi
動詞:すべての動詞
スクリプトエンジン:チェック
ファイルの存在を確認する:チェック
最後に「OK」ボタンをクリックして完了です。