Windows XP のローカルサーバ環境(ジャンクション利用)への Movable Type 4.1 のインストールで「mt-staticがみつかりません」という警告が表示される場合の対処
Category:[トラブルシューティング]
Tag:[MovableType, StaticWebPath, Junction, 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をインタプリタのとして認識するため、このような設定が必要です。
なお、ジャンクションの設定には、下記のツールを使いました(「ツールが良くない」という意味ではありませんので、誤解なきよう)。
そもそも、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 インタプリタのパスを解決します。
- Movable Type でサブドメインを利用する場合の設定
- Movable Type 4.1 でコメント投稿者情報が保存されない不具合について
- 「月別アーカイブリスト」が月別アーカイブで正常に表示されない不具合について
- Movable Type 4.0x でブログ記事へのリンクが post.html になる/ブログ記事のプレビューができない不具合について
- テンプレートの再構築で「モジュールというテンプレートが見つかりませんでした」というエラーになる場合の対処
- Movable Type 4 の管理画面で詳細メッセージのないエラーが発生する不具合について
- Movable Type 4 のデフォルトテンプレートで @import が表示される問題
- 検索結果のページ分割(3.3x 版)
- Movable Type でコメント投稿・トラックバックが重くなる事象を解消する
- HTTP/1.1 の「条件付きGET」を利用して PHP ファイルアクセスによるサーバ負荷を削減する
- MTEntries タグの lastn 属性と sort_order 属性(ascend)の同時指定が有効にならない件について
- Movable Type 3.x デフォルト・テンプレートのAtomフィードの不具合について
- Movable Type 3.3 で TypeKey サイン・イン時の JavaScript エラーを解消する
- カテゴリーリストで MTArchiveListHeader と MTArchiveListFooter が正常に動作しない問題
- Movable Type 3.2 と 3.31 におけるサブカテゴリーリストの表示の違いについて
- Movable Type 3.3 の再構築で「<MTTagName>タグが閉じられていません」になる問題の対処(改)
- Movable Type の検索でエラーになる問題について
- コメント・プレビューで実体参照が無効になる不具合を解消する
- Movable Type 3.3 アップグレードによる月別アーカイブ・日別アーカイブの不具合