PowerCMS™
PowerCMS 4 系のサポートは2026年3月31日をもちまして終了いたします。期限まで PowerCMS 5/6 最新版へのアップグレードをご検討ください。
[ブログ] PowerCMS 6 でのアップデートまとめ を追加しました。
[ブログ] PowerCMS サポートの実績 (2024年12月) を追加しました。
[ブログ] 展示会「第22回【東京】総務・人事・経理 Week 秋」を見学してきました を追加しました。

PowerCMS ブログ

ホーム > PowerCMS ブログ > 設定・管理画面カスタマイズ > フォームやコメントCGIの設置場所をカスタマイズする

2013年04月02日

フォームやコメントCGIの設置場所をカスタマイズする

セキュリティ等の観点からPowerCMSのmt-contactform.cgi (フォーム処理CGI)、mt-members.cgi (会員サイト系CGI)といったCGIアプリケーションを管理用CGI (mt.cgi)とは別の場所に設置したいといったケースがあると思います(mtディレクトリへのアクセスをIPアドレスで制限したいといった場合)。同様に mt-search.cgiや mt-comments.cgi の設置場所を変更したいケースもあるかと思います。

この時、ライブラリを複数設置して対応することもできますが、同じファイル群を複数設置するのは後々面倒です。

mt-contactform.cgi の設置場所とファイル名のカスタマイズ

MTのパスが /cgi-bin/mt/ だった場合(管理用スクリプトは /cgi-bin/mt/mt.cgi)、/cgi-bin/entry/contact.cgi にフォーム用のCGIを設置するために必要なカスタマイズは以下の通りです。

カスタマイズ前 ( /cgi-bin/mt/mt-contactform.cgi )

#!/usr/bin/env perl

use strict;
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/lib" : 'lib';
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/addons/PowerCMS.pack/lib" : 'addons/PowerCMS.pack/lib';
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/addons/ContactForm.pack/lib" : 'addons/ContactForm.pack/lib';

use MT::Bootstrap App => 'MT::App::ContactForm';

※ PowerCMS のバージョンによって内容が異なります。

カスタマイズの内容

ご利用の PowerCMS の mt-contactform.cgi をコピーして、下記の修正を行ってください。

1. 「use strict;」の直後に下記を追記してください。追記内容について/path/to/cgi-bin/mtには PowerCMS のインストール先を、絶対パスで指定してください。

BEGIN {
    $ENV{MT_HOME}   = '/path/to/cgi-bin/mt';
}

2. 「use lib」から始まる行の記述を下記へ置き換えてください。

use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/lib" : 'lib';
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/extlib" : 'extlib';
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/addons/Commercial.pack/lib" : 'addons/Commercial.pack/lib';
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/addons/PowerCMS.pack/lib" : 'addons/PowerCMS.pack/lib';
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/addons/PowerCMS.pack/extlib" : 'addons/PowerCMS.pack/extlib';
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/addons/ContactForm.pack/lib" : 'addons/ContactForm.pack/lib';
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/addons/ContactForm.pack/extlib" : 'addons/ContactForm.pack/extlib';

カスタマイズ後 ( /cgi-bin/entry/contact.cgi )

※PowerCMS のバージョンによって内容が異なります。

#!/usr/bin/perl -w

use strict;

BEGIN {
    $ENV{MT_HOME}   = '/path/to/cgi-bin/mt';
}

use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/lib" : 'lib';
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/extlib" : 'extlib';
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/addons/Commercial.pack/lib" : 'addons/Commercial.pack/lib';
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/addons/PowerCMS.pack/lib" : 'addons/PowerCMS.pack/lib';
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/addons/PowerCMS.pack/extlib" : 'addons/PowerCMS.pack/extlib';
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/addons/ContactForm.pack/lib" : 'addons/ContactForm.pack/lib';
use lib $ENV{MT_HOME} ? "$ENV{MT_HOME}/addons/ContactForm.pack/extlib" : 'addons/ContactForm.pack/extlib';

use MT::Bootstrap App => 'MT::App::ContactForm';

この段階で、/cgi-bin/entry/contact.cgi へデータをポストして、確認画面が正しく表示されることを確認してください。

環境変数の追加

以下の2つの環境変数を mt-config.cgi に追記して、フォームのページを再構築すればカスタマイズは完了です。

ContactFormScript contact.cgi
ContactFormCGIPath /cgi-bin/entry/

mt-comments.cgi の設置場所とファイル名のカスタマイズ

フォーム機能以外のCGIの場合(例:コメントの場合)、CGIのパスを変更するためには mt-config.cgi をコピーして mt-config-comments.cgi とし、mt-commets.cgi を /cgi-bin/comment/comments.cgiに設置、comments.cgi で以下のようにします。

...
BEGIN {
    $ENV{MT_HOME}   = '/path/to/cgi-bin/mt';
    $ENV{MT_CONFIG} = '/path/to/cgi-bin/mt/mt-config-comments.cgi';
}

use lib '../mt/lib';
use lib '../mt/extlib';
...

環境変数の追加

mt-config-comments.cgi で以下の環境設定を記述してサイトを再構築すればOKです。

CGIPath /cgi-bin/comment/
CommentScript comments.cgi

注意点

  • PowerCMS をアップグレードする場合、アップグレード後の PowerCMS のファイルを元に作り直してください。これは PowerCMS のアップグレードによってカスタマイズ前の CGI ファイルが更新されている場合があるためです。
  • CGI の画面で利用するテンプレートタグによっては手順通りのカスタマイズを行ってもエラーが発生する場合があります。その場合はエラーの内容にあわせて CGI ファイルを修正する必要があります。エラーが発生する場合はエラー画面に表示される内容をそえてサポートまでお問い合わせください。

カテゴリー
技術情報
設定・管理画面カスタマイズ

Recent Entries