0

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

  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 而不是在线工作?

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

4

1 回答 1

2

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

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

于 2012-11-29T18:28:57.550 回答