我正在帮助建立一个 Joomla 站点(使用 Joomla 1.5.26)。其中一页真的很大。结果,PHP 停止工作而没有任何错误,并且所有先前打印的字符串都被忽略。根本没有输出。我们将 display_errors 设置为 TRUE 并将 error_reporting 设置为 E_ALL。
我找到了 PHP 中断的确切行。它在库/joomla/application/component/view.php:196
function display($tpl = null)
{
$result = $this->loadTemplate($tpl);
if (JError::isError($result)) {
return $result;
}
echo $result;
}
一些信息:
- 替换 echo $result; 回声 strlen($result); 作品。字符串的长度为 257759。
- echo substr($result, 0, 103396); 正在打印部分内容。
- echo substr($result, 0, 103397); 结果根本没有输出。
- 回声 substr($result, 0, 103396) 。“一个”; 结果根本没有输出。因此,将字符串拆分为块不是解决方案。
我在脚本执行期间检查了服务器性能。CPU 使用率为 100%,但剩余内存充足。PHP 内存限制为 1024M。output_buffering 是 4096,但我尝试将其设置为不合理的高数字 - 死在完全相同的位置。服务器运行 Apache 2.2.14-5ubuntu8.10 和 PHP 5.3.2-1ubuntu4.18。PHP 作为 fast_cgi 模块运行。
我从来没有经历过这样的事情,谷歌搜索也没有结果。你们有没有人经历过类似的事情并知道解决方案?谢谢阅读!