好ob_start問題,我不能來這個ob_start和ob_end_clean代碼交手...與PHP代碼
基本上,我想在頁面部分中輸出的PHP代碼。
這裏是我的源代碼:
$content = trim(html_entity_decode($context['page_data']['body'], ENT_QUOTES, $context['character_set']));
$content = trim($content, '<?php');
$content = trim($content, '?>');
function dream_error_handler($output)
{
$error = error_get_last();
$output = "";
if (!empty($error))
foreach ($error as $info => $string)
if ($info == 'message')
$output .= $string;
return $output;
}
ob_start('dream_error_handler');
eval($content);
$code = ob_get_contents();
ob_end_clean();
$context['page_data']['body'] = $code;
現在,在模板功能,我使用這樣的:
global $context;
echo '
<div class="cat_bar">
<h3 class="catbg">
', $context['page_data']['title'], '
</h3>
</div>
<span class="upperframe"><span></span></span>
<div class="roundframe">
', $context['page_data']['body'], '
</div>
<span class="lowerframe"><span><!-- // --></span></span>
';
那麼,爲什麼我收到此錯誤消息?
HTTP錯誤500(內部服務器錯誤 ):意外的情況是遇到 而服務器是 試圖完成請求。
我在這做錯了什麼? $ context ['page_data'] ['body']具有有效的PHP代碼,簡單的echo 'Hello World';
,但它給我這500內部服務器錯誤。爲什麼?
您應該在模板中使用'.'而不是'''連接字符串。也看看Apache的錯誤日誌。 – Boldewyn
@Boldewyn ['echo()'](http://php.net/manual/en/function.echo.php)構造接受多個參數,儘管文檔聲明在這種情況下應該使用括號。 – jensgram