我正在使用 Mac OS X Lion,我在使用 FTP 时也遇到了这个问题(请注意,任何 FTP 客户端都是如此。我尝试过 Transmit、FileZilla、Cyberduck 和终端,但结果都一样)
我可以在 FTP 客户端中浏览文件,但当我上传文件时,客户端会挂起几秒钟,然后认为文件上传成功,但它只会创建一个包含一个空白行的新文件。有时,它只能上传 4-5 行。
然后它返回:
226 - 从数据连接读取时出错 226 传输已中止
但 2xx 是成功消息。这不是服务器问题,因为任何 Windows 机器都可以使用同一网络正常上传。有人能找出问题所在吗?它使我的 Mac 无法用于 Web 开发。
SFTP 和带有 SSL/TLS 的 FTP 仍然存在该问题。
答案1
当您拿起路由器并直接通过 PPPoE 连接时,问题就消失。
乍一看,问题出在路由器上。但事实并非如此,问题出在通过路由器连接的 Mac 上,该路由器通过 PPPoE 连接并尝试使用 FTP 上传。我知道,这很具体。
问题在于 MTU(最大传输单元)。显然,Mac OS X 将文件拆分成太大的块,路由器无法发送,因为路由器的 MTU 设置得比 Mac OS X 的低。
这里的路由器是 1492,还可以,但 Mac 的 MTU 是 1500,这是不可接受的。真的不明白为什么它可以直接与 PPPoE 配合使用。
如果您遇到同样的问题,请按照以下方法诊断和修复:
在终端中,运行以下命令查看 en0(或 en1,我的是 en0)的 MTU 是多少:
ifconfig | grep mtu
如果是 1500,则运行
sudo ifconfig en0 mtu 1300
这应该可以解决问题。
如果是,可能只能等到下次重启。您也可以在系统偏好设置 \ 网络 \ 以太网 -> 高级 \ 硬件中更改 MTU
稍后编辑:
一行修复(如果您想将其用作 Alfred 扩展或在启动时运行它,请替换为您的 sudo 密码):
echo <password> | sudo -S ifconfig en0 mtu 1300;