経緯
WinSCP で Perl プログラムをアップロードしたら 500 Internal Server Error. となってしまいました。
調査
サーバログでは次のようなエラーログが記録されていました。
suexec policy violation: see suexec log for more details: PATH/TO/PERL_CGI_PROGRAM.cgi
権限周り等も見ましたが、最終的には転送モードをバイナリモードのまま Perl プログラムをアップロードしていたことが原因でした。
設定変更
そこで、転送モードを見直してASCIIモードで転送するようにしました。
WinSCP を起動したら、まずウィンドウ上部の「転送設定」を開きます。
次に、プルダウンの最下部の「⚙設定」をクリックします。
いくつかプリセットが登録されていますが、今回は汎用的に使い回すので「デフォルト」の設定を変更したいと思います。そこで、「デフォルト」を選択肢て「編集」。
「転送モード」を「バイナリ」から「自動」に切り替え、「以下のファイルはテキスト転送モード」でプリセットの値を設定。
*.*html; *.htm; *.txt; *.php; *.php3; *.cgi; *.c; *.cpp; *.h; *.pas; *.bas; *.tex; *.pl; *.js; .htaccess; *.xtml; *.css; *.cfg; *.ini; *.sh; *.xml
今回は対応したい拡張子が全てく踏まれているので、これでOKです。
(余談) 誤って登録してしまった「以下のファイルはテキスト転送モード」の履歴を削除する
上述の一覧で見逃しをして、「この拡張子も」と独自に追加した一覧をいったん登録したところ、その履歴も常に表示されるようになってしまいました。
普段弄る場所でもないので良いといえば良いのですが、気になるので何とか削除できないかと試みてみました。
すると、この履歴はレジストリで保存していることが分かりましたので、削除したいと思います。
※レジストリを誤って操作するとPCが起動しなくなるなどの重大な故障の原因になる可能性があります。編集される際は細心の注意を持って自己責任でお願いいたします。
\HKEY_CURRENT_USER\SOFTWARE\Martin Prikryl\WinSCP 2\Configuration\History\Mask
ここに格納されています。
履歴は使用した順番で番号が入れ替わるのでそれで調整したり、不要な値を削除した後に残った1つの名前を変更で0にしても良いです。
削除して完了。これで先程の WinSCP の画面でも1つしか表示されなくなりました。