FTPで送受信した同じファイルの大きさが違う ~改行コードが一致しているか確認~


スポンサーリンク

私は基本的にFTP送受信ソフトとして FileZilla を使用しています。

しばしば「ローカルファイルとサーバー上のファイルの大きさが違う」ということが起こります。先日その違いに悩まされたので、備忘録として残しておきます。

結論を言うと、改行コードが違っていました。

ローカル(Windows 7)ではCRLF("\r\n")

サーバー(Linux)ではLF("\n")

が使用されています。

FileZillaには、この違いを自動的に吸収する機能があります(参考)。文字コードまでそのまま送受信したい場合、その機能を無効化する必要があります。

FileZillaの設定→転送→FTP: ファイルの種類

を開くと、「デフォルトの転送タイプ」という項目があります。


自動・ASCII・バイナリ
の3種類ありますが、自動・ASCIIモードでは文字コードの自動変換が行われます。自動変換を無効化する場合は、バイナリモードで通信する必要があります。

特に、PHPでテキストファイルを読み込む際、改行コードを\r\nで指定してexplodeした場合、ローカルでは\r\nで改行していたはずなのに、アップロードした瞬間\nだけになり(それにすら気づかない場合も…)、正常にexplodeできないという問題が発生することがあります。FTPクライアントはファイルをありのままに送受信すると信じていると、この問題を特定するのに時間がかかってしまうので、覚えておいて損はないと思います。

ご覧いただきありがとうございました。

last

フォローする