我正在使用PHP在我的专用服务器上设置游戏服务器,我遇到了这个问题。我有一个脚本,我运行以使游戏状态为JSON。
为了节省带宽和处理时间,我决定在更新脚本上,我想在更新服务器后直接运行相同的脚本,所以我只是包含它:
include "{$_SERVER["DOCUMENT_ROOT"]}/game/get/get_session_info.php";
这确实有效,但问题是这个include语句在该脚本的输出之前插入一个不可见的字符,使其无法解析为JSON。
我知道它来自include,因为对于我放入脚本的每个包含,都会插入其中一个不可见的字符。
如果我直接从其URL运行该脚本,则长度为8014;如果我从更新脚本运行它,则长度为8015。
如何防止PHP插入该额外字符,或者运行脚本并以不同方式返回其结果以便不会发生这种情况?
get_session_info.php
中唯一的回音是echo trim(json_encode($game));
以下是更新脚本中字符串的开头:
{ “状态”:2 “玩家”:4 “LOC1”: “15,25,35”,
在HEX中:
FEFF 7b227374617465223a322c22706c6179657273223a342c226c6f6331223a2231352c32352c3335222c
来自get_session_info.php
的相同字符串:
{ “状态”:2 “玩家”:4 “LOC1”: “15,25,35”,
在HEX中:
7b227374617465223a322c22706c6179657273223a342c226c6f6331223a2231352c32352c3335222c
它似乎是为每个包含插入feff
(除了包含我的mysqli_connect的那个,实际上......)。
答案 0 :(得分:1)
它不是生成隐形字符的include,但很可能是您包含的文件。检查该文件中PHP范围之外的空格。