Mixhostに移行したMovableTypeのログイン画面がエラーで出ない!Perlモジュールとパスが原因でした。

レンタルサーバーの Mixhost に旧サーバーからMovableTypeを移行したときにいきなりPerlモジュールの不足とPerlのパスが原因でつまづいたので、今後のためにメモ。

事前準備したのにいきなりエラー

旧サーバーから書き出した MySQL のデータを PhpMyAdmin で Mixhost の MySQL に流し込み、MovableType の mtフォルダ も移行し、mt-config.cgi の内容も Mixhost の環境に合わせて書き換え、事前準備も整ったところでいざ管理画面にアクセス!と mt.cgi にアクセスしたみたらエラー…。

install_driver(my_sql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains: /home.....
という内容からして MySQL のドライバーがないらしいです。

原因1:Perlモジュールの不足

MySQL のドライバというのは DBD::mysql という Perlモジュール のことみたいです。他のレンタルサーバーで Perlモジュール を求められたことないので気が付きませんでしたが、 Mixhost には標準ではインストールされてないみたいですね。高速なレスポンスを発揮するために不要な機能は入れてないのかもしれません。

Perlモジュールのインストール方法

MT に必要な Perlモジュール は Mixhost のコントールパネルである cPanel から簡単に入れることができます。 DBD::mysql を検索してインストールボタンを押すだけで簡単にインストールできました。

参考ページ

Perlモジュール を間違って入れたり、試しにいれてもアンインストールは簡単にできます。

MovableTypeに必要なPerlモジュールまとめ

DBD::mysql 以外に、既に標準でインストール済みや無くても大丈夫かもしれないませんが、いろいろな参考ページを元に必要かもしれないドライバ(Perlモジュール)をまとめておきます。

Movable Type を実行に必要
モジュール名 説明
CGI -
Image::Size -
File::Spec  (バージョン0.8以上)
CGI::Cookie -
LWP::UserAgent -

 

データベース モジュールとして必要
モジュール名 説明
DBI バージョン1.21以上
DBD::mysql MySQLを使用する場合に必要
DBD::ODBC バージョン1.25以上、Microsoft SQL Server を利用する場合 (Movable Type Advanced のみ対応)
DBD::Oracle バージョン1.25以上、Oracle Database を利用する場合(Movable Type Advanced のみ対応)

参考ページ

オプション機能を利用する場合
モジュール名 説明
Digest::SHA パスワードのセキュリティを強固にする場合に必要です
Plack PSGI 環境下で mt.psgi を実行する場合に必要です
CGI::PSGI PSGI 環境下で mt.psgi を実行する場合に必要です
CGI::Parse::PSGI PSGI 環境下で mt.psgi を実行する場合に必要です
XMLRPC::Transport::HTTP::Plack PSGI 環境下で mt.psgi を実行する場合に必要です
HTML::Entities 特殊な文字をエンコードする場合に必要です
HTML::Parser トラックバック機能や更新通知機能を利用する場合に必要です
SOAP::Lite (バージョン 0.5 以上) XML-RPC による作業を行う場合に必要です
File::Temp ファイルのアップロードで上書きを行う場合に必要です
Scalar::Util 再構築キューを利用する場合に必要です
List::Util 再構築キューを利用する場合に必要です
Image::Magick
画像のサムネイルを作成したり、CAPTCHAを利用する場合に必要です
( または GD、Imager のいずれかの Perl モジュールか、NetPBMツール
IPC::Run Movable Type のイメージドライバとして NetPBM を利用する場合に必要です
Storable 外部プラグインの利用の際に必要となる場合があります
Crypt::DSA コメント投稿時のサインインを高速化したい場合に必要です
Crypt::SSLeay AOL や Yahoo! などの SSL を利用する OpenID のコメント投稿者を認証する場合に必要です。または、Google Analytics を利用する場合に必要となります
Cache::File Yahoo! Japan によるコメント投稿者の OpenID 認証を許可する場合に必要です
MIME::Base64 コメントの認証機能を利用する場合やメール送信に SMTP を利用する場合に必要です
XML::Atom Atom API を利用する場合に必要です
Cache::Memcached Movable Type のキャッシング機能として memcached サーバーを利用する場合に必要です
Archive::Tar バックアップと復元で圧縮の機能を利用する場合に必要です
IO::Compress::Gzip バックアップと復元で圧縮の機能を利用する場合に必要です
IO::Uncompress::Gunzip バックアップと復元で圧縮の機能を利用する場合に必要です
Archive::Zip バックアップと復元で圧縮の機能を利用する場合に必要です
XML::SAX 復元の機能を利用する場合に必要です
Digest::SHA1 LiveJournal、OpenID でコメント投稿者を認証する場合に必要です
Net::SMTP メールの送信に SMTP を利用する場合に必要です
Authen::SASL CRAM-MD5、DIGEST-MD5 / LOGIN を SASL メカニズムとして利用する場合に必要です
Net::SMTP::SSL SMTP 認証に SSL を利用する場合に必要です (Movable Type 6.1.2 まで)
Net::SMTP::TLS SMTP 認証に STARTTLS コマンドを利用する場合に必要です (Movable Type 6.1.2 まで)
IO::Socket::SSL SMTP 認証に SSL / STARTTLS コマンドを利用する場合に必要です。または、Google Analytics を利用する場合に必要となります
Net::SSLeay -
Safe -
Digest::MD5 -
Text::Balanced ブログ内検索で必要
XML::Parser -
Time::HiRes run-periodic-tasks を実行するために必要です。
Mozilla::CA Google Analytics を利用する場合に必要になります。
XML::SAX::ExpatXS
(または、XML::SAX::Expat)
バックアップデータの復元に必要となります
XML::LibXML::SAX バックアップデータの復元に必要となります。

参考ページ

インストール済みかチェックする方法

MovableTypeの環境チェック用CGIである mt-check.cgi を実行することで、インストールされているかどうか確認できます。mt-check.cgi はMTを配置したルートフォルダにあります。

インストールしたのにエラー

必要な Perlモジュール をインストールして、再度 mt.cgi にアクセスしたら同じエラーが表示されました。 mt-check.cgi でインストールされていることは確認済みなのですが、ちゃんとインストールされていないかのかな?インストールの方法がまずいのかな?と思いつつ、何回かMySQLのモジュールのインストールを行いましたが、エラーは解消されませんでした。問題解決のためにいろいろ検索してしているとPerlのパスについての注意事項を見つけました。

原因2:Perlのパスを変更

MovableTypeのCGIファイルにあるPerlのパスを Mixhost に合わせて変更していないのが原因でした。 Mixhost のページに以下の記載がありました。

書き換え対象のファイル

MovableType のフォルダ直下に以下14個のCGIファイルがあります。これにある Perl のパスを書き換える必要があります。

  • mt-atom.cgi
  • mt-check.cgi
  • mt-comments.cgi
  • mt-cp.cgi
  • mt-data-api.cgi
  • mt-feed.cgi
  • mt-search.cgi
  • mt-sp.cgi
  • mt-tb.cgi
  • mt-testbg.cgi
  • mt-upgrade.cgi
  • mt-wizard.cgi
  • mt-xmlrpc.cgi
  • mt.cgi

パスを#!/usr/bin/perlml -wに変更する

例えば mt-atom.cgi の場合、このファイルを開くと先頭行にある Perl のパスを以下のように変更します。

#!/usr/bin/perl -w

↓に変更

#!/usr/bin/perlml -w

[ cPanel ]-[Perl モジュールのページには以下の記述がありました。後から試してみたところ、赤枠の2行に変更するのでも大丈夫でした。

#!/usr/bin/perl -w
use cPanelUserConfig;
ほとんどの場合、先頭行は #!/usr/bin/perl となっているので、2行目に use cPanelUserConfig; を入れるだけです。 #!/usr/bin/perlml とどちらがいいかは好みとなります。

そしてアクセス成功!

14個のCGIファイルのパスを変更したらアップロードして、再度 mt.cgi にアクセスしたところ、無事ログイン画面が現れました。

レンタルサーバーの引っ越しは何度か行っていますが、簡単ではないですね…。

前へ

Citrix Recieverを事前起動させるレジストリEnablePreLaunchのメモ(Windows)

次へ

CloudFlareのRocket Loaderが原因で突然Javascriptが動かなくなった