【问题标题】:XML Parsing Error: xml processing instruction not at start of external entityXML 解析错误:xml 处理指令不在外部实体的开头
【发布时间】:2017-11-19 15:25:04
【问题描述】:

我有一个 vBulletin 3.8 论坛。 当我们单击任何帖子的编辑按钮(因此应显示快速编辑表单)时,我在浏览器的控制台上收到此错误:

XML 解析错误:xml 处理指令不在外部实体的开头 地点:http://www.xxxxx.xx/ajax.php?do=quickedit&p=438 第 2 行,第 1 列:

...快速编辑表单没有出现,进度条永久显示。

  • 我尝试禁用钩子/插件,但问题仍然出现。
  • 我在 config.php 上有这一行:ini_set("display_errors", false);所以我认为这不是 PHP 的致命错误/警告,它破坏了 xml 正常语法。

  • 我已告知,这将在站点移动到另一台服务器后开始。它对你说了什么吗?

关于这个错误的任何一般想法?

编辑: 好吧,我找到了这个问题的原因,但我不知道如何解决它。在 localhost 测试板上完全相同的站点可以完美运行,但在实时服务器上,任何 html 页面/ajax 调用等都有一个无用的空行作为第 1 行。

对于普通的 html 页面,浏览器没有理由返回错误,但是当我们谈论 ajax 调用时,响应顶部的这个空行会破坏浏览器对 xml 的解析。所以似乎是一个服务器/ PHP/ Apache 设置应用了这个空行。知道如何解决吗? https://imgur.com/a/4neb0

【问题讨论】:

  • 也许您包含的 PHP 文件在结束 ?> 之后包含一个空格?这可能是您的本地主机环境中不同的文件。

标签: php xml parsing vbulletin


【解决方案1】:

对你来说可能已经晚了,但是任何 php/nginx/apache 的新手都可以理解为什么。

答案很简单:移动代码时,您可能没有使用 git/rsync/scp,但我猜,您使用的是 zip(可能涉及 Windows/Linux)。

如何发现这是一个两天的旅程,尝试了很多东西:

我们有同样的错误,我们也在移动我们的服务器。我们试过了:

  • 我们认为服务器软件版本有问题。
  • 我们认为云提供商操作系统映像存在问题。
  • 我们使用 docker 来避免这些问题,但空行问题仍然存在。
  • 我们认为代码 ?> 结尾有问题,我检查了所有这些。但事实并非如此。
  • 我最后问了我的同事:你是怎么得到代码的?来自 Git?他说他从ZIP下载然后上传到服务器。
  • 我删除了服务器上的代码(从 zip 中提取)并使用 git 从我们的 github 下载了一个新副本。
  • 魔法,问题解决了。空行不见了。

所以我认为问题在于压缩进度可能改变了一些文件空行。始终使用 git。

【讨论】:

    猜你喜欢
    • 2014-02-19
    • 2022-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 2017-12-24
    • 1970-01-01
    • 2011-03-11
    相关资源
    最近更新 更多