CGIでInternal Server Error-原因は改行コードでした

概要

何度も設置したことのあるCGIを、何度も使っているVPSサーバに設置しようとしたところ、Internal Server Errorが出てしまいました。このエラーは原因究明に時間がかかることが多く、見るとドキッとします。

何度も設置したことのあるCGIですが、現在は手元にないので、今回は新しいファイルを入手して設置。コードの中身は変わっていません。

FileZillaを使い、SFTPでサーバにアップしました。CGIの権限はいつもと同じく755。

他の人に設置してもらったらあっさりと動いたので、後々のために原因究明だけ進めました。

調査

気がついたのは、サーバにアップしてもらったファイルサイズと、手元のファイルサイズが違うこと。見た目のコードは同じ。ただ、改行コードを見ると、手元のファイルはCR + LF。これをLFにしてアップしたら動きました。

まとめ

今まで、わざわざ改行コードを変換してサーバにアップした覚えがありません。

最近はSFTPやFTPSで転送することが多いのですが、SFTPは改行コードの変換をサポートしていないということを知りませんでした。知らなくても問題なかったということは、以前使いまわしていたCGIファイルがLFで保存されていたものと思われます。手元にないので確認できませんが。