【问题标题】:PHP file losing formatting after FTP uploadFTP上传后PHP文件丢失格式
【发布时间】:2014-07-16 18:47:10
【问题描述】:

我正在使用 WinSCP 将文件传输到 FTP 站点。我目前有一种情况,文件夹中的一个特定文件在上传时会丢失所有格式,导致 PHP 文件不再工作。

文件夹中的所有其他 PHP 文件在上传时都能正常工作。

我不明白为什么只有一个文件会以这种方式受到影响。任何人都可以了解情况吗?

【问题讨论】:

  • “丢失格式”是什么意思? PHP 引擎可以解析您的脚本,无论所有代码都在一行没有空格,还是每行代码之间有 50 个换行符。
  • 你确定吗?当代码中的 cmets 与有效命令合并以创建无效命令时会发生什么?
  • 这就是我从不在 PHP 中使用 // cmets 的原因。 /* comment */ 不会对一行中的所有内容或任何其他格式有任何问题
  • 感谢您的提示,对导致格式问题的原因有什么想法吗?
  • 不知道,丢失格式是什么意思?

标签: php ftp winscp


【解决方案1】:

文件可能是通过ASCII mode 传输的,这将修改文件的编码和行尾。

【讨论】:

  • 是的,我明白了,但我的问题是为什么文件夹中只有一个文件会受到影响?
  • 可能是文件触发了 ASCII 或 BINARY 模式。可以是文件名或文件内容。也许它以 Windows 行结尾保存,而所有其他文件都以 Unix 行结尾保存。
【解决方案2】:

由于您没有说明“丢失格式”的确切含义,因此很难回答:

根据 src 的回答,如果行尾因 ASCII/文本模式传输而改变,如果在不支持目标行尾的编辑器中打开,则生成的转换文件可能会被视为丢失格式。虽然这很难解释为什么只有一个受影响的文件。 虽然 WinSCP 在技术上可以根据文件大小或修改时间戳选择不同的传输模式,但如果这样配置,我怀疑你这样做了。 另请注意,WinSCP 默认为二进制传输模式。如果您说明您在 WinSCP 中实际使用的传输模式,将会有所帮助。此信息的最终来源是 WinSCP 会话日志文件。共享日志文件的相关部分也有助于调查。

另一种可能性是,受影响的源文件最初是用不同的行尾创建的(比如在不同于您通常使用的编辑器中)。因此,该问题与传输模式或 WinSCP 无关。只有在您使用远程端仅支持一种行尾格式的第三个编辑器打开文件后,才可能显示出差异。

尽管在这两种情况下,该文件仍应在 PHP 中工作,因为 PHP 支持 Unix 和 Windows 行结尾。可能源文件的格式很奇怪,以至于在 ASCII/文本模式传输期间,服务器感到困惑并错误地转换了文件。但这只是一个疯狂的猜测。

同样,我们需要更多信息来帮助您。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    相关资源
    最近更新 更多