为什么我本地编辑好的文件,使用filezilla上传到服务器上换行就全部没了

方法一就可以完美解决,感谢gpt解决了困扰我多年的问题。

你的情况 99% 是因为换行符格式不一致 + FileZilla 以 ASCII 模式上传导致换行被破坏

原因分析:FileZilla 上传时自动修改换行符格式

你的本地 Windows 文件是:

  • CRLF (Windows 换行:\r\n)

Linux 服务器正常使用:

  • LF(Unix 换行:\n)

如果 FileZilla 设置为 ASCII 模式上传,它会自动把换行转换,甚至会错误识别 PHP/HTML 为“文本文件”,导致换行被破坏 → 上传后的文件变成一整行。

🛠 解决方案

✔ 方法 1:把 FileZilla 设置成 Binary(最推荐)

  1. 打开 FileZilla
  2. 菜单:传输(Transfer)
  3. 找到:传输类型(Transfer Type)
  4. 选择:Binary(二进制)

🔒 Binary 模式不会修改换行符,不会动文件内容,100% 安全。

✔ 方法 2:关闭 FileZilla 的 ASCII 自动识别

  1. 打开 FileZilla → 编辑(Edit)
  2. 设置(Settings)
  3. 找 → ASCII filetypes
  4. 确认 .php, .html, .js, .css 是否被错误加入
  5. 把它们删除
  6. 默认保持为 Binary(自动模式 Auto + 禁用 ASCII)的效果最好

✔ 方法 3:上传前检查文件编码

确保你的编辑器保存为:

  • UTF-8 + CRLF / UTF-8 + LF 皆可
  • (Binary 模式不会损坏)

推荐使用 VS Code → 右下角可切换换行符 CRLF / LF

📌 给你一个简单判断方式

文件上传到服务器后变一行,通常是:

  • CR(\r)丢了
  • 只剩 LF 或者 CRLF 被破坏
  • PHP/HTML 的 \n 被 FileZilla 自动过滤掉

🧪 确认是否是换行被破坏

你可以 SSH 连接服务器跑:

cat -v 文件名.php

如果显示:

Hello world$Hello world$

说明所有换行符被干掉了。

🎯 最终建议

永远把 FileZilla 设置为 Binary,不要用 ASCII 模式。

返回首页