Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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 のプラグイン開発については、以下のドキュメントも合わせて参照ください。
プラグイン開発ガイド

TakeshiNickOsanai
Developer Relation Manager, Sales Engineer/PreSales, User Community Supporter, CMS Engineer, AWS Certified Solutions Architect
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした