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 ファイルを修正する必要があります。エラーが発生する場合はエラー画面に表示される内容をそえてサポートまでお問い合わせください。
- カテゴリー
- 技術情報
- 設定・管理画面カスタマイズ
コメントを投稿する