Movable Typeで「Can't locate parent.pm in...」というエラーを解決する


Movable Typeで、バージョンアップをしたときや、新しいプラグインを追加したときに「Can't locate parent.pm in @INC...」というエラーが表示され、動作しなくなることがあります。

これは、Movable Typeコアもしくは追加したプラグインで利用する前提となっているPerlモジュール、「parent.pm」が利用中のサーバーに設置されていないことにより発生するものです。

Can't locate parent.pm in @INC (@INC contains: /home/path/to/movabletype/mt/plugins/mixiComment/lib
/home/path/to/movabletype/mt/plugins/spamlookup/lib
/home/path/to/movabletype/mt/plugins/WidgetManager/lib
/home/path/to/movabletype/mt/plugins/SmartphoneOption/lib
・・・

Perlの設定が可能なサーバーの場合

CPAN等のモジュール管理ツールで、parentモジュールを追加してください。

レンタルサーバー等、設定できないサーバーの場合

parentモジュールを入手する

CPANのウェブサイトにアクセスし、ページ中央のフォームに「parent」と入力して、モジュールを検索してください。

http://search.cpan.org/

検索結果に「parent」モジュールがあるので、詳細ページへ移動し、「source」リンクを右クリックして、リンク先のファイルを保存してください。保存ファイル名は「parent.pm」にします。

Movable Typeにモジュールを追加する

「parent.pm」ファイルを、以下のいずれかのディレクトリにアップロードしてください。
Movable Typeのメンテナンスを自分が行わないなどの理由で、コアファイルが上書きされてしまうのを避けたい場合は、プラグイン内に追加する方が安全です。ディレクトリがなければ作成してください。

Movable Typeを設置したディレクトリ/extlib
Movable Typeを設置したディレクトリ/plugins/エラーが発生したプラグイン/extlib

参照元

もう少し詳しい話は、荒木さんの解説を参照ください。

Perlで「Can't locate parent.pm」が発生する場合の対処: 小粋空間