Windows XP のローカルサーバ環境(ジャンクション利用)への Movable Type 4.1 のインストールで「mt-staticがみつかりません」という警告が表示される場合の対処

Windows XP のローカルサーバ環境(ジャンクション利用)への Movable Type 4.1 のインストールで「mt-staticがみつかりません」という警告が表示される場合の対処

Posted at March 7,2008 3:00 AM
Tag:[Junction, MovableType, StaticWebPath, WindowsXP]

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をインタプリタのとして認識するため、このような設定が必要です。

なお、ジャンクションの設定には、下記のツールを使いました(「ツールが良くない」という意味ではありませんので、誤解なきよう)。

リンク作成シェル拡張for Windows 2000/XP

そもそも、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ウィジェット

Feedウィジェットでローカルホストを指定

Feedウィジェット

5.対処(その2)

ジャンクションを使わずに、全 CGI の shebang 行(1行目の #!/usr/per/bin という部分)を

#!/xampp/perl/bin/perl

に変更するなど、他の方法で Perl インタプリタのパスを解決します。

関連記事
zenback
人気エントリー
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)