查看在Windows中保存相同的文件时PHP解析器错误

问题描述:

我有一个PHP文件为我的网站,index.php,它,因为它站在服务器上,它工作正常,没有错误触发和页面加载,因为它应该。查看在Windows中保存相同的文件时PHP解析器错误

服务器是运行Apache的Linux服务器,而我的本地计算机是Windows计算机。使用FileZilla Windows客户端,我下载index.php并在Windows中的Notepad ++中打开文件。我将此文件保存在Windows中,然后上载并覆盖服务器上的文件。此时,页面没有加载,这个错误在页面上:

Parse error: syntax error, unexpected $end in /path/to/my/site/index.php on line 1

我GOOGLE了这个错误相当多,并且所有的答案我已经遇到的细节,它要么是PHP短标记问题(替换<?<?php,但该文件不包含任何短标记)或文件中某处的一个杂散括号(但我已检查并且所有括号正确匹配)。除此之外,我并没有触及源代码本身,只是在打开它后保存文件,因为它在本地Windows保存之前运行,但不是在本地Windows保存之后运行,所以我不得不相信这是Windows和Unix之间的结束问题。

什么是更令人费解的是,我能创造一个test.php,只是叫phpinfo(),并在Windows保存并上传的,当我把它从我的网页浏览器中的网页加载正确。问题必须与Notepad ++如何将基于Unix或基于Mac的行尾文件转换为非Windows创建的文件到Windows行尾文件相关联,并且以某种方式被破坏。

任何想法?如果我省略了任何内容,我会尽力提供更多信息,但我真的不认为这里需要该来源。

+1

用尽可能简单的源文件重现问题。一旦你做完了,仍然看不出有什么问题,请在十六进制编辑器中查看该文件以查看究竟发生了什么。您似乎与自己相矛盾,因为您认为它与Notepad ++有关,但同时声称该文件未经修改。如果你已经*用Notepad ++修改了它,首先想到的是在文件开头的一个隐藏的unicode水印(你一定会用十六进制编辑器看到)。祝你好运! – gamen 2011-04-18 14:41:51

+0

@ gamen感谢你的回应,当我想到同样的事情时,它就像是unicode水印这样的隐藏字符,我检查了一下,没有发现这种情况。记事本++正确地保存文件,问题是Filezilla如何传输文件(如ASCII而不是二进制)。谢谢您的帮助! – Mattygabe 2011-04-18 14:47:17

尝试在您的filezilla客户端中将传输类型设置为BINARY而不是TEXT。这可能是传输编码而不是记事本++的问题,因为我之前遇到类似的问题,通过强制传输到二进制文件解决了这个问题。

+0

这就是问题所在! FileZilla被设置为“Auto”,因此在传输文件时,它一定是选择了“ASCII”而不是“Binary”,这就是文件被破坏的地方。太棒了! – Mattygabe 2011-04-18 14:45:22