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

[Tags]: CGI, Movabletype, server, windows, XAMPP

ーカルサーバーとしてずいぶん名前が広がってきた感がする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

Cサーバー
Posted at Tue, 06 26, 2007 23:15 Permalink Comments Trackbacks
はてなブックマークに追加(1) | del.icio.usに追加(1) | LivedoorClipに追加(0) | POOKMARK Airlinesに追加

関連性の高いエントリー(タグ抽出)
タグから抽出した関連性の高いエントリー最高5件を表示しています

Trackback (1)


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

トラックバック時刻:2007年09月29日 21:55

Comments List (0)

コメントはまだありません

コメント記入欄

保存しますか?


メールアドレスの記入は任意です。
「管理者にだけコメントを公開する」にチェックマークを入れた場合、
投稿後の画面は「コメント保留画面」になります。
HTMLは使えません。
2008 / 03 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31