PHP文件编码格式本地vs上传

时间:2012-11-29 18:24:03

标签: php encoding

这是一个问题,我在网上部署应用程序时已经有两次,而且我已经偶然解决了两次,但仍然没有理解导致问题的原因。这是第三次,它仍然困扰着我。

  1. 我在本地使用PHP文件和Notepad ++(文件以UTF-8编码,没有BOM编码顺便说一句)。这里的一切都很好(config:easyPHP)没有PHP错误。

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

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

  4. 使用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而非在线?

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

1 个答案:

答案 0 :(得分:2)

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

<强>更新
是的,可能你的文件是以ascii模式而不是二进制模式传输的,所以解决方法是将Filezilla设置为以二进制模式传输文件,请参见实际设置https://stackoverflow.com/a/555003/352672