WinSCP の転送モードを確認する (+ 拡張子による自動判定の履歴を削除する)

経緯

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つしか表示されなくなりました。

参考

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。