こんにちは、お久しぶりです。
自宅サーバで長年使っていたANHTTPDですが、
サーバ機の新調を機に、IISに移行しました。
検索して出てくるページを参考に
Active Perl をインストールして、設定完了!
ブラウザからCGIを叩くと、しっかり表示される!
と思いきや・・・ところどころ502エラーになるページがあるぞ。
エラーの詳細をサーバPCで見たらこんなエラーが出ていました。
"指定された CGI アプリケーションは、正しく動作しませんでした。HTTP ヘッダーの完全なセットが返されませんでした。"
どうやら、Active Perlの警告メッセージがヘッダより先に出力されているらしいですね。
どういうことか調べてみたら、参考になるページを発見!
それ多分IIS7でできるよ
http://perl-users.jp/articles/advent-calendar/2010/win32/13
"IISのCgiModuleはSTDERRをSTDOUTと同様にクライアントへ出力しようとしてしまい途中でエラーとなる"
ふむ。
つまり、Perl実行時に警告が出力されないようにすれば解決です。
実は、Active Perlには、警告を出力しないようにする実行オプションがあります。
コマンドラインで、「perl -h」と打ってみよう。
コマンドライン引数に、「-X」をつけると、警告が出力されなるらしいですね。
これがわかったところで、実際にIISで設定してみます。
設定変更前:
「"C:\Program Files\Perl64\bin\perl.exe" "%s" %s」
設定変更後:
「"C:\Program Files\Perl64\bin\perl.exe" -X "%s" %s」
※Active Perlインストールフォルダは適宜読み替えてくださいね。
これで502エラーになってしまっていたページをもう一度叩いて見ると、無事ページが表示されました。
IISのCgiModuleにPerlを設定するときは、-X オプションをつけるようにしましょうね。