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


投稿日:2015年8月17日
  • 1
  • 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を実行する方法

おすすめの記事

プロ根性のあるデザイナーやブロガーにお勧めする4つの画像編集ソフト

プロ根性のあるデザイナーやブロガーにお勧めする4つの画像編集…

初めてでも理解できるようになる「Firefox機能拡張の開発」

初めてでも理解できるようになる「Firefox機能拡張の開発」

全く新しい決済サービスPayPal.Meの導入と使い方を解説

全く新しい決済サービスPayPal.Meの導入と使い方を解説

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

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

DNS Amp攻撃の解説と、踏み台にされないためのBIND DNSの設定

DNS Amp攻撃の解説と、踏み台にされないためのBIND DNSの設定

開発の最前線でクリエイター・エンジニアに必要なプログラミング言語

開発の最前線でクリエイター・エンジニアに必要なプログラミン…

Mac OS 9時代のIDE接続のHDDをMacDrive 10を利用してWindows 10で読み込む方法

Mac OS 9時代のIDE接続のHDDをMacDrive 10を利用してWindows 10…

シンプルなスパムコメント対策プラグイン「Simple AntiSpam」を作成しました

シンプルなスパムコメント対策プラグイン「Simple AntiSpam」を…


コメントを残す

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

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