【问题标题】:PHP file encoding format local vs uploadedPHP文件编码格式本地与上传
【发布时间】:2012-11-17 21:46:00
【问题描述】:

这是我在在线部署应用程序时已经遇到过两次的问题,我已经偶然解决了两次,但仍然不了解导致问题的原因。这是第三次了,还是很烦。

  1. 我在本地使用 PHP 文件和 Notepad++(文件以 UTF-8 编码,没有 BOM 编码 btw)。这里一切正常(配置:easyPHP),没有 PHP 错误。

  2. 将文件上传到服务器后,一些文件给了我基本的 PHP 错误,例如第 1 行中的 *unexpected T_FUNCTION*,尽管我的代码中没有错误。

  3. 幸运的是,我碰巧用 Windows 记事本打开了文件,这给了我一个提示:字符之间没有空格或换行符(这就是 PHP 给我错误的原因)。总结一下:

使用 Notepad++ 打开的文件:

<?php
// Comment
function() { etc... (rest of the file)...

用 Windows 记事本打开的文件:

<?php//comment function(){ ... which causes error online (but not on EasyPHP)

我到处查看并尽我所能(在记事本++ 中添加换行符,转换为 ANSI/UTF8 等,但文件似乎已损坏或其他什么)。这不是我复制粘贴的脚本或任何东西,我通过在 Windows 中添加一个新的 *.txt 文档并将其重命名为 *.php 来创建我的所有文件。

我的问题:

  • 为什么 Notepad++ 和 windows 记事本会显示不同的换行符?是编码问题吗? Windows/UNIX 以不同方式解释文件?
  • 为什么这可以在我的电脑上使用简单的 PHP 而不是在线?

提前感谢您的任何回答,如果没有,请提示。

【问题讨论】:

  • 你如何上传文件(ftp、http 上传)?
  • PS:我目前唯一的临时解决方案是删除损坏的文件,复制另一个工作 PHP 文件并重命名它,然后重新键入重写或复制粘贴我的代码,这显然不是一个持久的解决方案。
  • @Jeff 我在 FTP 中使用 FileZilla 上传文件,并尝试同时使用被动和主动模式。

标签: php encoding


【解决方案1】:

如果您通过 FTP 将文件传输到生产服务器,则问题可能是某些 ftp 客户端进行自动换行符转换。检查使用不同 ftp 客户端传输文件或调整其设置以禁用自动 ascii 文本换行符转换。

更新:
是的,可能您的文件是以 ascii 模式而不是二进制传输的,因此解决方案是将 Filezilla 设置为以二进制模式传输文件,请参见此处的实际设置https://stackoverflow.com/a/555003/352672

【讨论】:

  • 我是这样看的,并且使用了不同的 FTP 工具。我不认为这是问题所在,因为如果文件是用 Notepad++ 打开的,如果用 Windows 记事本打开,我注意到我的计算机上已经存在差异(没有任何上传)。此外,并非所有文件都有问题(如 3 on 800,视情况而定)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
  • 1970-01-01
  • 2014-07-16
  • 2013-11-07
  • 2020-03-29
  • 1970-01-01
相关资源
最近更新 更多