IISでActive Perlを設定するときは-Xオプションをつけよう

こんにちは、お久しぶりです。

自宅サーバで長年使っていたANHTTPDですが、
サーバ機の新調を機に、IISに移行しました。

検索して出てくるページを参考に
Active Perl をインストールして、設定完了!

ブラウザからCGIを叩くと、しっかり表示される!

と思いきや・・・ところどころ502エラーになるページがあるぞ。

エラーの詳細をサーバPCで見たらこんなエラーが出ていました。

"指定された CGI アプリケーションは、正しく動作しませんでした。HTTP ヘッダーの完全なセットが返されませんでした。"

2016042901.png

どうやら、Active Perlの警告メッセージがヘッダより先に出力されているらしいですね。

どういうことか調べてみたら、参考になるページを発見!

それ多分IIS7でできるよ
http://perl-users.jp/articles/advent-calendar/2010/win32/13

"IISのCgiModuleはSTDERRをSTDOUTと同様にクライアントへ出力しようとしてしまい途中でエラーとなる"

ふむ。

つまり、Perl実行時に警告が出力されないようにすれば解決です。

実は、Active Perlには、警告を出力しないようにする実行オプションがあります。

コマンドラインで、「perl -h」と打ってみよう。

コマンドライン引数に、「-X」をつけると、警告が出力されなるらしいですね。

2016042904.png

これがわかったところで、実際にIISで設定してみます。

設定変更前:
「"C:\Program Files\Perl64\bin\perl.exe" "%s" %s」
2016042902.png

設定変更後:
「"C:\Program Files\Perl64\bin\perl.exe" -X "%s" %s」
2016042903.png

※Active Perlインストールフォルダは適宜読み替えてくださいね。

これで502エラーになってしまっていたページをもう一度叩いて見ると、無事ページが表示されました。

IISのCgiModuleにPerlを設定するときは、-X オプションをつけるようにしましょうね。