2012-03-26 87 views

回答

3

FTP不太可能“将所有内容放在一条线上”。更有可能的是,该文件使用* nix风格的行结尾,并将文件以二进制模式上传到Windows机器或类似的东西。

看到,不同的平台有不同的字符序列来表示“新行”。在Windows中,这通常是CR + LF,但在* nix上,它只是LF。问题在于,很多软件都假设有关结束文本文件的行应具有的内容,并且如果它看到LF字符,则不会将其视为换行符。因此,一切看起来都在一条线上。 (我并不认为PHP对于行结尾是如此肛门,但是我已经看到了其他语言令人不安)。

二进制模式传输字节的文件字节,并且不会转换行尾。如果你下载或上传图片或其他东西,这很好。但是,如果您在运行不同操作系统的计算机之间以二进制模式传输文本文件,则很可能会看到“不正确”行结尾的结果。

解决方案:对PHP文件使用ASCII模式。大多数FTP客户端都可以设置使用哪种模式,甚至可以使用某种类型的文件使用哪种模式。由于PHP文件是文本文件,因此在大多数情况下,它们可能应以ASCII模式进行传输。

1

解决方案,为我工作:

  1. 使用Atom.io编辑
  2. 安装了Atom包line-ending-converter
  3. 开放Atom的文件>标记所有>点击鼠标右键>转换行结束> UNIX格式
  4. 保存文件并上传到服务器(如果JS文件,在浏览器中打开,看是否换行,现在是正确的)

一些背景信息from here

当下载了与文本/ ASCII模式Windows行结束(CR + LF)的文件时,服务器与CR + LF替换LF,导致不正确的CR + CR + LF。在WinSCP的内部编辑器中打开此文件时,编辑器会将该序列解释为两行结束符(CR和CR + LF),从而在每条内容行之后产生一个空行。保存文件时,内部编辑器会保存两个Windows行尾CR + LF和CR + LF。在上传时,他们被转换为两个LF。解决方法是使用外部编辑器并确保WinSCP不强制编辑文件的文本模式。