Windows XP のローカルサーバ環境(ジャンクション利用)への Movable Type 4.1 のインストールで「mt-staticがみつかりません」という警告が表示される場合の対処
Windows XP で、XAMPP + XAMPP addon Perl のローカルサーバ環境を色々試していたら、次のような事象が発生することが分かりました。
1.問題
Perlインタプリタのパス解決のために、ジャンクション(後述)を設定し、Movable Type 4.1 の新規インストールを開始すると、次のような警告画面が表示されます。
もちろん、mt-static はフォルダ名も変更しておらず、アプリケーションディレクトリ直下にあります。
この状態で、フォームに表示された(正しい)データのまま「開始」をクリックしても、次のような同じ画面が表示され、無限ループに陥ります。
PCを変えても同じ事象が発生したので、100%発生するのではないかと思われます。
ちなみに、本当に mt-static フォルダがみつからない場合は、次のように正しいレイアウトで表示されます。
最初の画面のように、2つの画面が重なったような、妙なデザインで表示されている場合は、ほぼ今回の問題に遭遇していると考えて間違いないでしょう。
2.原因
冒頭に記述した通り、Perl インタプリタのパス解決に使用した「ジャンクション」という機能に起因しているようです。
ジャンクションとは、Linux の「シンボリックリンク」のようなもので、XAMPP addon Perl のインストールパス¥xampp¥perlを¥usrとして、仮想的なフォルダを作成することができます。Movable TypeのCGIファイルのデフォルト設定は、¥usr¥bin¥perlをインタプリタのとして認識するため、このような設定が必要です。
なお、ジャンクションの設定には、下記のツールを使いました(「ツールが良くない」という意味ではありませんので、誤解なきよう)。
そもそも、Movable Type のインストール開始時には、mt-staticの中にある mt.js ファイルを取得して、さらにその中に「function openManual」という文字列があることをもって、mt-static パスの取得を成功と判定していますが、この処理が正常に動作しないようです。
エラーになる時のHTTPレスポンス($response->status_lineを出力)を見てみると、
500 Can't locate object method "configure" via package "Net::HTTP"
となっていました。
ジャンクション以外の方法で Perl インタプリタのパスを解決した場合はmt-static パスのエラーにはならないので、ジャンクションがこの問題の原因と考えます。
3.対処(その1)
環境設定ファイル、mt-config.cgiを作ってからアクセスすれば、この無限ループに入ることなくインストールできます。もともと mt-config.cgiは、MT3.x 前期の時代には、インストール前に手動で設定していたファイルです。
作り方は、アプリケーションディレクトリに mt-config.cgi-original がありますので、このファイルをコピーするか、リネームしてmt-config.cgi の元ネタを作ります。
次に、任意のエディタで mt-config.cgi を開き、下記の青色の部分を設定します。
:
# The CGIPath is the URL to your Movable Type directory
CGIPath http://www.example.com/cgi-bin/mt/
# The StaticWebPath is the URL to your mt-static directory
# Note: Check the installation documentation to find out
# whether this is required for your environment. If it is not,
# simply remove it or comment out the line by prepending a "#".
StaticWebPath http://www.example.com/mt-static
#================ DATABASE SETTINGS ==================
# REMOVE all sections below that refer to databases
# other than the one you will be using.
##### MYSQL #####
ObjectDriver DBI::mysql
Database DATABASE_NAME
DBUser DATABASE_USERNAME
DBPassword DATABASE_PASSWORD
DBHost localhost
##### POSTGRESQL #####
ObjectDriver DBI::postgres
Database DATABASE_NAME
DBUser DATABASE_USERNAME
DBPassword DATABASE_PASSWORD
DBHost localhost
##### SQLITE #####
ObjectDriver DBI::sqlite
Database /path/to/sqlite/database/file
CGIPath は Movable Type をインストールしたパス、StaticWebPath は、今回問題となっているスタティックディレクトリのパス(mt-staticまで含む)を記述します。
その下はデータベースの設定です。MYSQL/SQLITE はいずれか一方のみ、必要な項目(MySQLであればデータベース名・ユーザ名・パスワード、SQLiteはデータベースのパスのみ)を設定して、不要な方は削除してください。
赤色の POSTGRESQL は最初から削除してください(使うのであれば他のDB設定を削除)。
保存して、ブラウザから Movable Type のインストールディレクトリにアクセスします。
「ログイン」をクリックすれば、mt-static の検証はおろか、途中のデータベース設定などのウィザードを一気にスキップして、アカウント作成画面に進みます。
これで、インストールを最後まで進められます。
4.この対処による懸念事項
インストール後も、HTTP経由でローカルホストにアクセスする機能が一部、使えない可能性があります(下)。
テーマのURLでローカルホストを指定
Feedウィジェットでローカルホストを指定
5.対処(その2)
ジャンクションを使わずに、全 CGI の shebang 行(1行目の #!/usr/per/bin という部分)を
#!/xampp/perl/bin/perl
に変更するなど、他の方法で Perl インタプリタのパスを解決します。
- MovableTypeプラグインの独自CGIをNginxに対応させる方法
- Movable Type 5で「Got an error: Can't use 'defined(%hash)' (Maybe you should just omit the defined()?)」というエラーになる場合の対処
- 旧バージョンのMTでPerl5.26(Perl5.24以降)に対応する方法
- MT6.2のファイルアップロードで「Undefined subroutine &POSIX::strftime」になる問題の対処
- Movable Typeのファイルアップロードで「アップロードしたファイルは大きすぎます。」というエラーになる場合の対処
- Movable Typeのパスワード変更で「URLが不正です。」というエラーなる件についての対処
- Movable Typeで「Cannot find column 'blogs' for class 'MT::Blog'」となる場合の対処
- Movable TypeでMTPageNextタグが効かなくなる不具合について
- Movable Typeの復元で「Request-URI Too Large」になるときの対処
- サーバ故障と「Connection error: Too many connections」エラーおよびMySQLテーブル破損について
- Movable Typeでエラー発生箇所を特定する方法
- IE9でMovable Typeを利用する方法
- MTIfタグにtagモディファイアを利用する場合の注意事項
- Movable Type 5のブログの設定で「Can't call method "label" on unblessed reference」が発生する問題について
- Movable Type 5.03へのアップグレードで再構築時に「Script Error」が発生する件について(つづき)