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


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



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を実行する方法

おすすめの記事

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

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

サーバリソースをリアルタイムに監視するdstatのインストールと使い方

サーバリソースをリアルタイムに監視するdstatのインストールと…

PukiWikiで5段階評価を付けるプラグインを作成しました

PukiWikiで5段階評価を付けるプラグインを作成しました

Excelでセルとセルの間をダブルクリックすると移動する機能を停止する方法

Excelでセルとセルの間をダブルクリックすると移動する機能を停…

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

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

誤って削除したGoogle Chromeのブックマークを復元する方法

誤って削除したGoogle Chromeのブックマークを復元する方法

ページ編集の手間を劇的に減らす、Custom Field Templateでカスタムフィールドを作る方法

ページ編集の手間を劇的に減らす、Custom Field Templateでカス…

Windows 10でpsd形式のファイルをサムネイル表示する方法

Windows 10でpsd形式のファイルをサムネイル表示する方法


コメントを残す

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

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください