【发布时间】:2018-08-27 12:44:43
【问题描述】:
我遇到了一个不知道如何调试的问题。有时,在特定的回显之后,输出会在 PHP 脚本中途突然停止。
这是代码的一部分。在someLonJsonString 之后,输出有时会停止。当输出停止时,刷新页面也没用,所以它也与值有关?
<div class="ac-calendar-options">
<div class="timestamp"><?php echo $currentTimestamp;?></div>
<div class="someLongJsonString"><?php echo $someLongJsonString;?></div>
<!-- The output of the script will cut off here -->
<div class="timezone"><?php echo $timezone;?></div>
</div>
刷新无济于事,但在长 Json 字符串之前添加一些无用的回显确实有帮助:
<div class="ac-calendar-options">
<div class="timestamp"><?php echo $currentTimestamp;?></div>
<div style="display:none"><?php echo "test"; ?></div>
<div class="someLongJsonString"><?php echo $someLongJsonString;?></div>
<div class="timezone"><?php echo $timezone;?></div>
</div>
当我删除fix 时,问题又回来了。上面的fix 确实为该项目修复了它,但过了一会儿,它再次弹出,但为另一个带有另一个 JSON 字符串的项目。
如何调试这个问题?即使暂时显示该页面/项目的错误也可以解决问题。而且我只是不明白为什么一个简单的回声会暂时解决问题。
自从我们从 5.6 迁移到 php 7.x 后,这个问题神奇地解决了。
【问题讨论】:
-
也许你达到了时间限制?试试
set_time_limit(0); -
JSON 字符串里面有什么?如果您使用
htmlspecialchars正确转义它会发生什么? -
尝试在浏览器中查看源代码,可能会有提示。
-
你的 JSON 字符串中很可能有一些特殊字符。正确地转义它或做任何你需要标准化你的输出。
-
@Peter 我将进行一些转义。现在它或多或少没有转义。我仍然觉得奇怪为什么 PHP 会完全停止输出,而不仅仅是弄乱 html。问题一周左右出现一次,所以如果再次出现,我必须等待。