xamppでてがろぐ(CGI)を動かす

20221106_xmp_tglg.png

以前から気になっていたフリーCGI「てがろぐ」をウェブアプリケーションの開発環境をローカルで簡単に構築できるソフト「XAMPP」で動かすためのメモです。

xamppを使わない場合はてがろぐをローカルで動かそう | チラ裏ソリロキーが参考になるかと思います。

  • Windows10 Home 64bit 21H2
  • xampp(portable) Control Panel v3.3.0 / PHP Version 8.1.6

そのほか細かい設定は「xampp」タグ参照。

ググると「xampp同梱perlは古い・簡易版でフルバージョンではない」等の情報が見られましたが、最新のxamppではそのようなこともないようです。ただ、ダウンロードしてきたフリーCGIをhtdocsディレクトリに置くだけでは500エラーが出て使うことができません。これは、CGIファイル先頭行のperlパスがたいていは#!/usr/bin/perlとなっており、xamppの設定と異なるためです。

xamppのperlパスはデフォルトでは#!"C:\xampp\perl\bin\perl.exe"となるために、ダウンロードしてきたCGIファイルの先頭行をxamppのperlパスに書き換える必要があります。しかし、このように書き換えた状態で設置テストや動作確認を終えた後はウェブサーバーにアップロードする際にまた先頭行を書き換えなければ次はウェブ上で500エラーとなります。絶対忘れる。

なので、先頭行の#!/usr/bin/perlを書き換えなくてもxamppでCGIが動くようにシンボリックリンク(ジャンクション)を作成します。

 

シンボリックリンク(ジャンクション)を作成

  1. タスクバーの虫眼鏡アイコンクリック
  2. 検索欄に「cmd」と入力、管理者として実行をクリック
C:WINDOWS\system32>

と表示されるので「cd /」と入力

C:\>

Cドライブ直下になるので

mklink/j c:\usr c:\xampp\perl

これでCドライブ直下のusrフォルダにアクセスするとxamppフォルダ内perlフォルダにアクセスするように設定ができます。

シンボリックシンク(ジャンクション)を削除する

一応。コマンドプロンプトで

rmdir c:\usr

とするとusrフォルダが削除されます。これでxamppでCGIを動かす準備ができました。

cgi-binフォルダ以外でCGIを動かす

これは私がhtdocsフォルダ内にさらにフォルダを作りそれぞれにバーチャルホストの設定をしているせいなのかもしれないのですが、その中にtegalogフォルダを作っててがろぐを設置しても403エラーになったので必要だったものです。

てがろぐフォルダ内に.htaccessファイルを作成し

Options +ExecCGI
AddHandler cgi-script .cgi .pl

これで「http://バーチャルホスト/tegalog/tegalog.cgi」にアクセスするとてがろぐの表示・動作確認ができました。

てがろぐの設定

実際の運用に関する細かい設定やカスタマイズについてはおいおい書いていく予定です。

ここでは「ファイル名「tegalog.cgi」を省略してアクセス可能にする方法」にしたがい、てがろぐ設置フォルダ内の.htaccessに以下

DirectoryIndex tegalog.cgi

を記述したときにログインや新規投稿がうまくいかなかった場合の対処法を書いておきます。

tegalog.cgi 76行目付近

(バージョンによって行数は変わるかもしれません)の「CGI名の取得方法」

my $howtogetpath = 2;

の「2」を「1」へ変更します。