質問: さくらVPSのcentos6.9、apache上でCGIを動かしたいです。 SSH接続して、viエディタで以下のような簡単なcgiファイルを作成しました。 格納場所は、/var/www/cgi-bin です。 ``` #!/usr/bin/perl print "Context-type: text/html\n\n"; print "CGIが動かない"; ``` パーミッションを755に設定し、ブラウザでアクセスすると、問題なく表示されます。 このあと、TransmitでFTP接続し、表示されたファイルをダウンロードしました。 直後、TransmitでモードがASC2になっていることを確認した上で、置き換えアップロードしました。 パーミッションを755に設定し、ブラウザでアクセスすると500エラーになります。 CGIで500エラーになり、FTPが関係することといったら、アップロード時の転送モードがASC2になっていることくらいしかないと思っていたのですが、他になにか原因があるのでしょうか? ご存知の方おりましたら、是非ご教授願います。 ### 追記です windows10を引っ張ってきて、WinSCPで上記と同じことをやってみたのですが、やはり500エラーとなりました。 Transmitがというより、FTPソフトを使うと500エラーになるような気がしています。
回答: 500エラーとなった状態のcgiファイルをviで開くと末尾に`^M`のような表示はないでしょうか? もしあった場合は、改行コードとして"\r"が含まれているためにエラーとなっていると考えられます。 ご認識の通りASCIIモードでFTP転送したことによる影響が考えられます。 また、下記コマンドでもどのような文字コードが含まれているのかが確認できます。 ``` od -c test.cgi ```