PHP 包括留下不可见的字符足迹

PHP include leaving invisible character footprint

我正在使用 PHP 在我的专用服务器上设置游戏服务器,我遇到了 运行 这个问题。我有一个脚本,我 运行 将游戏状态设为 JSON。

为了节省带宽和处理时间,我决定在更新脚本上,我想在更新服务器后直接运行这个相同的脚本,所以我只包含它:

include "{$_SERVER["DOCUMENT_ROOT"]}/game/get/get_session_info.php";

这确实有效,但问题是此 include 语句在该脚本的输出之前插入了一个不可见的字符,使其无法解析为 JSON。

我知道它来自包含,因为对于我在脚本中放入的每个包含,都会插入这些不可见字符之一。

如果我运行那个脚本直接从它的URL,长度是8014;如果我 运行 它来自我的更新脚本,长度是 8015.

如何防止 PHP 插入那个额外的字符,或者 运行 脚本和 return 它的结果不同,这样就不会发生这种情况?


注:


这是更新脚本中字符串的开头:

{"state":2,"players":4,"loc1":"15,25,35",

并且在十六进制中:

feff7b227374617465223a322c22706c6179657273223a342c226c6f6331223a2231352c32352c3335222c

来自 get_session_info.php 的相同字符串:

{"state":2,"players":4,"loc1":"15,25,35",

并且在十六进制中:

7b227374617465223a322c22706c6179657273223a342c226c6f6331223a2231352c32352c3335222c

它似乎为每个包含插入 feff(除了包含我的 mysqli_connect,实际上...)。

生成不可见字符的不是包含,很可能是您要包含的文件。检查该文件中 PHP 范围外的空格。