Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@TakeshiNickOsanai

Movable Type のmt-config.cgiを編集できない状況で、環境変数を設定する

Movable Type には 環境変数 という仕組みがあり、システムの初期値を設定することができます。

Movable Type の環境変数は、通常mt-config.cgiに記述を行います。

しかし、mt-config.cgi の設定を編集できない状況なのに、どうしても環境変数を設定しなければいけない、という場合がありえます。

このようなときに、簡単なプラグインで環境変数の設定を行うサンプルです。

環境変数を設定するサンプルプラグイン[ConfigDirective]

テストケースとして、[ConfigDirective]というプラグインを作りながら解説します。

ConfigDirectiveの構成は以下のようになります。

Plugins─┐
        └─MultiBlog(デフォルトのプラグイン)
        └─ConfiDirective(フォルダ)
                └── config.yaml(設定ファイル)

[plugins]は、Movable Type のパッケージ内のディレクトリです。[MultiBlog] や [Mardkdown] など、デフォルトで設定されているプラグインが入っているディレクトリとなります。

[ConfigDirective] は、今回作成するプラグインの設定ファイルを含むフォルダとなります。
[config.yaml] は、今回環境変数を設定するファイルとなります。拡張子のとおり、yaml形式で記述します。

以下に、config.yamlの記述例を紹介します。

id: ConfigDirective
name: ConfigDirective
version: 1.00

config_settings:
    CGIMaxUpload:
        default: 50000
    AssetFileExtensions:
        default: png, gif

サンプルコードでは、以下の2つの環境変数を設定しています。

CGIMaxUpload
Movable Type からのアップロード可能なファイルの容量を設定する

AssetFileExtensions
Movable Type の管理画面からアップロード可能なファイルの拡張子を設定する

今回の例では

  • 50KB以上のファイルのアップロードを許可しない
  • 拡張子がpng,gifのファイルのみアップロードを許可し、それ以外は許可しない

という設定になります。

このプラグインを設置後、アイテム管理画面から50kb以上、pngやgif以外の画像をアップロードしようとすると、以下の様に制限がかかります。

cgimaxupload.png

50KB以上の画像をアップロードができなくなりました。

assetfileextensions.png

拡張子jpgのファイルはアップロードできなくなりました。

環境変数の設定は可能な限り一箇所にまとめたほうが良い

今回はconfig.yamlの記述だけで、Movable Type の環境変数を設定しました。

実際の運用では、環境の設定が複数に分散されると、管理上の見通しが悪くなります。

環境変数などのシステム的な設定は、できる限り一元管理したほうが良いでしょう。

今回の方法はやむを得ない場合の手段、ぐらいにお考えください。

Movable Type のプラグイン開発については、以下のドキュメントも合わせて参照ください。
プラグイン開発ガイド

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
3
Help us understand the problem. What are the problem?