你的情况 99% 是因为换行符格式不一致 + FileZilla 以 ASCII 模式上传导致换行被破坏。
✅ 原因分析:FileZilla 上传时自动修改换行符格式
你的本地 Windows 文件是:
- CRLF (Windows 换行:\r\n)
Linux 服务器正常使用:
- LF(Unix 换行:\n)
如果 FileZilla 设置为 ASCII 模式上传,它会自动把换行转换,甚至会错误识别 PHP/HTML 为“文本文件”,导致换行被破坏 → 上传后的文件变成一整行。
🛠 解决方案
✔ 方法 1:把 FileZilla 设置成 Binary(最推荐)
- 打开 FileZilla
- 菜单:传输(Transfer)
- 找到:传输类型(Transfer Type)
- 选择:Binary(二进制)
🔒 Binary 模式不会修改换行符,不会动文件内容,100% 安全。
✔ 方法 2:关闭 FileZilla 的 ASCII 自动识别
- 打开 FileZilla → 编辑(Edit)
- 选 设置(Settings)
- 找 → ASCII filetypes
- 确认
.php,.html,.js,.css是否被错误加入 - 把它们删除
- 默认保持为 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 模式。