XAMPP1.8.2でCGIプログラムを実行する方法


投稿日:2015年8月17日
  • 0
  • 0



CGIプログラムに触れたところ403エラーや500エラー

xampp-cgi

久しぶりにCGIプログラムをカスタマイズしようとXAMPPで実行してみたところエラーが出ました。

Apacheのエラーログ「C:\xampp\apache\logs\error.log」を調べてみたところ、Perlのパスが通っていないのが原因でした。

エラーの内容

[Sat Aug 15 21:54:52.065700 2015] [access_compat:error] [pid 2348:tid 1848] [client ::1:11760] AH01797: client denied by server configuration: C:/xampp/htdocs/xampp/hoge.cgi

簡単に対策できるので、残しておきます。


エラーの原因

通常UNIX系のサーバではPerlのパスが以下のようになっています。

#! /usr/bin/perl

対してXAMPPをCドライブ直下にインストールした場合、Perlのパスが以下のようになっています。

#! C:/xampp/perl/bin/perl

対策

CGIプログラムのパスをXAMPP用に変更してもいいのですが、今度は修正忘れで本番環境で動かないと騒ぎそうです。
そこでローカルではWindowsのシンボルリンク機能を使って疑似的に「/usr/bin/perl」で実行できるようにします。

スタートからプログラム名を指定して実行で「cmd」と入力してエンター。コマンドプロンプトを立ち上げて以下のコマンドでシンボリックリンクを作成します。

cd /
mklink /d c:\usr c:\xampp\perl
mklink /d c:\usr\local c:\xampp\perl

簡単に解説すると「mklink」がシンボルリンクを作るコマンド。
/d」はディレクトリ、「c:\usr」がリンク、「c:\xampp\perl」がターゲットです。

これで「c:\usr」へアクセスした時に、「c:\xampp\perl」へアクセスするようになります。

これで無事にCGIが実行できるようになります。


Apacheの設定

一応Apacheの設定が間違っている可能性もあるのでCGI用の設定を張っておきます。

XAMPPのApacheの設定ファイルは「C:\xampp\apache\conf\httpd.conf」にあります。

まずモジュールが読み込まれているか調べる

LoadModule cgi_module modules/mod_cgi.so

ルートディレクトリ以下でCGIを使えるようにExecCGIを有効にする

<Directory "C:/xampp/htdocs">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>

CGIスクリプトの拡張子を指定

<IfModule mime_module>
(省略)
    AddHandler cgi-script .cgi .pl .asp
(省略)
</IfModule>

これで実行できるはずです。

XAMPPでは「C:\xampp\apache\conf\extra\httpd-xampp.conf」もインクルードしているので、動作がおかしい場合は変な記述がないか調べてみてください。


現在のページを共有する



現在のページに関連する記事

XAMPP1.8.2でCGIプログラムを実行する方法 XAMPPで.htaccessを利用すると500Errorになる理由
XAMPP1.8.2でCGIプログラムを実行する方法 WordPress、XAMPP、WindowsXPで.htaccessがエラーになる場合の対処法
XAMPP1.8.2でCGIプログラムを実行する方法 XAMPPのApacheでエラーが出た際の対処法
XAMPP1.8.2でCGIプログラムを実行する方法 Webサービスの最前線で動作するApache HTTP サーバの初期設定
XAMPP1.8.2でCGIプログラムを実行する方法 最新のXAMPPをインストールし、安全・高速に運用する方法
XAMPP1.8.2でCGIプログラムを実行する方法 XAMMP導入時にApacheのVirtualHostを設定する方法
XAMPP1.8.2でCGIプログラムを実行する方法 Apacheで拡張子が「.html」のファイル内でPHPを実行する方法

おすすめの記事

Linuxでサーバを構築するに当たって必要になる基礎知識

Linuxでサーバを構築するに当たって必要になる基礎知識

Norikraの使い方をサンプルのクエリとイベントを交えて解説

Norikraの使い方をサンプルのクエリとイベントを交えて解説

インストールだけじゃない!yumの設定から便利な使い方まで徹底的に解説

インストールだけじゃない!yumの設定から便利な使い方まで徹底…

WordPress公式テーマTwenty Tenを子テーマでレスポンシブWebデザインに変更

WordPress公式テーマTwenty Tenを子テーマでレスポンシブWebデ…

Apacheのmod_expiresでファイルタイプごとにキャッシュをコントロールする方法

Apacheのmod_expiresでファイルタイプごとにキャッシュをコント…

メールのエラーコードと、メールサーバのmaillog解析方法まとめ

メールのエラーコードと、メールサーバのmaillog解析方法まとめ

エンティティとデコード用プラグイン「Entity Decode Button」を作成しました

エンティティとデコード用プラグイン「Entity Decode Button」…

サーバの処理を自動実行するcronの仕組みと応用法

サーバの処理を自動実行するcronの仕組みと応用法


コメントを残す

コメントは認証制のため、すぐには反映されません。

プログラミングに関する質問は「日本語でプログラミングの悩みを解決するQ&Aサイト sukegra」をご利用ください。