XAMPPとperlパスを調整してCGI(MT)を動かす+Windows ジャンクション

ーカルサーバーとしてずいぶん名前が広がってきた感がするXAMPPですが、これでperlまでのパスを書き換えずにCGIを動作させる時にちょっと引っかかってしまったので、そのひとつの対処策になります。
広範なものではなくって、局所的対処法です。

  1. WindowsでXAMPPのとき
  2. CGIファイルの関連付けがうまくいかないとき
  3. CGIファイルに書かれてるperlパスを修正したくないとき
  4. 題材のCGIとして「Movabletype」
  5. HDDのファイルシステムがNTFSであるとき

XAMPP利用の流れ

  1. XAMPPをDLしてインストールする
  2. perlのアドオンを加える
  3. .htaccessでセキュリティ設定
  4. PHPのini設定(mbstring)
  5. perlの関連付け

この辺りまではいろんな方々が解説して下さってます。勉強になるし助かりますよね。
ここで特に取り上げるのは「5」です。
CGIファイルが何らかのトラブルによって、ファイルの関連付けする事が出来ないとき。
ファイルの関連付けが出来ないと具体的にどんなになるかというと、先ず、CGIファイルのperlパスをひとつひとつ全て書き換えないといけない事になります。

例えばMTのCGIファイルには
「#!/usr/bin/perl -w」のが書かれてるのですが、これを
「#!/xampp/perl/bin/perl -w」と書き直して、perlまでのパスを指定してあげないといけないわけです。
(※上記はドライブのトップレベルにXAMPP入れた場合)

mt-check.cgiを試しに書き換えてみて、これが動けばつまりその状態です。
なので、これ(ファイルを書き換えなくて済むようにする)を解消する為に「ファイルの関連付け」を行います。

  1. CGIファイルのプロパティを開く
  2. 「変更」ボタンを押して「参照」に入る
  3. XAMPPに入ってるperlまでを指定する
  4. 「xampp\perl\bin\perl.exe」こんな記述までを指定

たいていは上記までで完結するかと思います。

ファイルの関連付け出来ない

。。。困りました。関連付けをやってみてもうまくいかない。
クリアにやり直そうと思ってCGIの関連付けそのものを消して新にやろうとしたら設定が残らない。
perlそのものをXAMPPとは別に入れてみて関連付け復活を期待してみるもののやはりダメ。
そんな状況に陥ってしまった時です。

Windowsのシンボリックリンクとはジャンクションの事です。NTFSには本来、シンボリックリンクと同等なジャンクションの機能がありますが、ジャンクションを作るには特別なツールを使う必要があります。Windowsでフォルダのジャンクションを作成すると、リンク先フォルダ(ジャンクション)のプロパティ表示に、[シンボリックリンク]タブが現れます。

すいませんが詳しい解説は上記引用先を。
もとにあるディレクトリ構造やファイルの性質を保持したものを、別の箇所に持って来る事が出来るって感じに思って貰えたら良いのかな・・・。そんな風にとりあえず思って下さい。

そして、それを簡単に実現してくれるソフトをひとつ導入。
リンク作成シェル拡張for Windows 2000/XP(WindowsNT/2000/XP / ユーティリティ)

インストール後の使い方は、ファイルやディレクトリを右クリックしたままどっかの別の箇所に持って行きます(同一ドライブ内)。
そこでドラッグ解除すると「リンクを作る」って項目が出て来るので、それを選択する事でジャンクションが作成されます。
ここで改めて注意。

  • ファイルシステムがNTFSである
  • ジャンクション作成は同一ドライブ(HDD)内で

追記:2007/06/28 00:18:49

NTFS Utils 詳細情報

では話をXAMPPに戻して一気に例です。
XAMPPをDドライブ直下に入れてる場合の事例。

  1. D:/xampp/perl/ (XAMPPに入ってるperlディレクトリ)を右クリックしたままD直下に持って行く
  2. 「リンクを作成」する・・・ジャンクション作成
  3. D:/perl が出来たら、それを D:/usr/ にリネームする

ここまで出来たら、XAMPPを起動させて試しにmt-check.cgiを動かしてみましょう。稼動すれば解決です。
CGIファイルのperlパスを書き換える事無く、思う存分にMTを楽しむ事が出来ます。

あとがき

XSASの場合にはなぜジャンクション不要なのか?というのには仮想ドライブ・仮想ディレクトリって言葉がヒントかもです。
やってる事が似てるからかもしれません。なので、ジャンクションでなくとも仮想ドライブ辺りでも同様に解決可能な気がします。

それで、XSASの2パターン(perl5.6と5.8)共にダメだったMT4の稼動成功です。こっちではEC-CUBE等、XSASで(私の技量では)動かせないプログラムも動いてくれるので非常に良いのです。

[参考資料]

XAMPP/5.Perlのインストール - Ground-SunLight
Apache2/5.httpd.confの編集 - Ground-SunLight
XAMPP - 青海波@Tokyoblog PukiWiki Plus!

追記:2007/06/27 01:11:12

  1. xamppもperlアドオンもzip版で入れる
  2. ジャンクション作成するusrディレクトリをxampp内に作成
  3. 仮想ドライブでxamppディレクトリを仮想化する

こんな風にするとサーバー環境を単一のディレクトリ内に収める事が出来ますね。
OrnitySoftware

更に追記:2009/04/04 23:43:25

自分の書き方では、まるで異なるドライブ間では使っちゃいけませんよ?みたいな感じになってたんで訂正。
異なるドライブ間でも使えますし、私も使ってたりします。ただ、そこには注意点があるという事で。

▼異なるドライブやパーテーションの間でジャンクションを構成すると、ジャンクション下のフォルダをごみ箱へ移動できなくなる。
対策)ごみ箱に移動させずに即座に削除する(「shift+del」あるいは「shift」を押しながらごみ箱へ移動)ようにすれば削除可能。2000/XPのエクスプローラーの仕様。
▼ジャンクション(フォルダではなくファイル)をごみ箱に移し「ごみ箱を空にする」を実行すると、ジャンクションもとのファイルまで削除してしまう。
2000/XPのエクスプローラーの仕様。

全く別の資料探しの途中で見掛けたのですが、ジャンクション利用の際にとても良い勉強になるので紹介しておきますヾ(´・ω・)ノ゙

ジャンクション機能を使いこなす - EeePC 900シリーズ Wiki - livedoor Wiki(ウィキ)

XAMPPではじめる全部無料のかんたん+最新自宅サーバーfor Windows
林 和孝
ラトルズ
売り上げランキング: 41093

▲ to Top

トラックバック(1)

カズヲさんがMTをローカルで動かすようにした記事を読んでウチでもやってみよっかなーと漠然と思ってたんですが、昨日深夜、突如思い立って実装してみました。... 続きを読む

▲ to Top