通过FTP上传php文件,上传时所有换行符和CR都会丢失

通过FTP上传php文件,上传时所有换行符和CR都会丢失,ftp,line-breaks,Ftp,Line Breaks,我可以下载我没有上传的文件,回车也可以,但是上传后我的文件放在一行上 这使得此应用程序很难进行故障排除,因为出现了错误,但一切都在第1行 为什么会发生这种情况?FTP不太可能将所有内容都放在一条线上。更有可能的情况是,该文件使用*nix样式的行尾,并且您以二进制模式将该文件上载到Windows计算机,或者类似的东西 看,不同的平台有不同的字符序列来表示新行。在Windows中,这是最常见的CR+LF,但在*nix上,它只是LF。问题是,很多软件都假设文本文件应该有哪一行结尾,如果它看到LF字符,

我可以下载我没有上传的文件,回车也可以,但是上传后我的文件放在一行上

这使得此应用程序很难进行故障排除,因为出现了错误,但一切都在第1行


为什么会发生这种情况?

FTP不太可能将所有内容都放在一条线上。更有可能的情况是,该文件使用*nix样式的行尾,并且您以二进制模式将该文件上载到Windows计算机,或者类似的东西

看,不同的平台有不同的字符序列来表示新行。在Windows中,这是最常见的CR+LF,但在*nix上,它只是LF。问题是,很多软件都假设文本文件应该有哪一行结尾,如果它看到LF字符,就不会将其视为换行符。所以所有的东西看起来都在一条线上。我不认为PHP对行尾的理解如此简单,但我也见过其他语言对它很着迷

二进制模式逐字节传输文件,不转换行尾。这是伟大的,如果你是下来-或上传图像或东西。但是,如果在运行不同操作系统的机器之间以二进制模式传输文本文件,则可能会看到行尾不正确的结果


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

FTP不太可能将所有内容都放在一行上。更有可能的情况是,该文件使用*nix样式的行尾,并且您以二进制模式将该文件上载到Windows计算机,或者类似的东西

看,不同的平台有不同的字符序列来表示新行。在Windows中,这是最常见的CR+LF,但在*nix上,它只是LF。问题是,很多软件都假设文本文件应该有哪一行结尾,如果它看到LF字符,就不会将其视为换行符。所以所有的东西看起来都在一条线上。我不认为PHP对行尾的理解如此简单,但我也见过其他语言对它很着迷

二进制模式逐字节传输文件,不转换行尾。这是伟大的,如果你是下来-或上传图像或东西。但是,如果在运行不同操作系统的机器之间以二进制模式传输文本文件,则可能会看到行尾不正确的结果


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

适合我的解决方案:

使用Atom.io编辑器 安装Atom软件包 在Atom>标记全部>鼠标右键单击>将行尾转换为>Unix格式中打开文件 保存文件并上载到服务器如果是JS文件,请在浏览器中打开以查看换行符是否正确 一些背景资料:

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


对我有效的解决方案:

使用Atom.io编辑器 安装Atom软件包 在Atom>标记全部>鼠标右键单击>将行尾转换为>Unix格式中打开文件 保存文件并上载到服务器如果是JS文件,请在浏览器中打开以查看换行符是否正确 一些背景资料:

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


尝试将FTP工具设置为二进制模式。尝试将FTP工具设置为二进制模式。