我的网站出现 500 内部服务器错误。错误日志显示以下错误:“脚本头过早结束:cgi_wrapper”,在我的 Joomla 应用程序中。
它仅在加载一个特定文件时发生。应用程序/网站的其余部分正常工作。错误日志中没有显示其他相关问题 - 没有指示超时或权限错误。
导致错误的文件是模板/布局文件。此外,我已经确定了一段会导致错误的代码,当它被注释掉时,网站加载得很好。这里是:
if( $question->type == '1' || $question->type == '2' || $question->type == '3' )
{
//shuffle items
$shuffled_items = $this->shuffle_assoc($items);
$output = '';
$output .= '<table class="answer-table">';
$output .= '<tr>';
$output .= '<td>';
$output .= '<ul class="answers">';
foreach($shuffled_items as $item)
{
$output .= '<li num=' . $item->num . '>';
$output .= $item->item;
$output .= '</li>';
}
$output .= '</ul>';
$output .= '</td>';
$output .= '</tr>';
$output .= '</table>';
$output .= '<table class="answer-table correct-answer" style="display: none">';
$output .= '<tr>';
$output .= '<td>';
$output .= '<p class="question-instructions">Correct Answer:</p>';
$output .= '<ul class="answers correct-answer">';
foreach($items as $item)
{
$output .= '<li num=' . $item->num . '>';
$output .= $item->item;
$output .= '</li>';
}
$output .= '</ul>';
$output .= '</td>';
$output .= '</table>';
echo $output;
}
它使用在 view.html.php 文件中设置的变量 $questions(对于那些了解 Joomla 的人)。似乎是这个变量触发了错误。如果我不分配 $questions 变量,那么模板将加载得很好。
此外,在上面的示例中,它首先测试问题类型($question->type)。如果 $question->type 不是 1、2 或 3,还有其他代码部分会被触发,并且仍然会产生错误。但为了简洁起见,我省略了其他代码,因为它仅在存在相关问题类型。当上面的代码单独运行时,它会导致错误。
所以,我在这里迷路了。让我感到困惑的是,只有这个模板文件和 $questions 变量会导致错误。其他一切正常。它在我的本地服务器上也运行良好。
差点忘了,使用的是 Joomla 1.5.22、PHP 5.3.3、Apache 2.2.3、Cent OS 5.8。该服务器还运行 Parallels Plesk Panel 10。
我希望有人可以指出我的解决方案。
谢谢!