0

如果我有一个带有开始和结束<?php /* stuff */ ?>标记的 PHP 脚本,并且在此之后使用标准 HTML,是否可以告诉服务器停止发送正常的 HTML,例如,脚本捕获错误?

例子...

<?php
// ... rest of the script above here

$buildout = '(compiler output will display here)';
$execsout = '(program output will display here)';

// ... errors would be displayed here using die();
?>
<!doctype html>
<head>
<title>Test Page</title>
<meta charset="utf-8"/>
<!-- rest of the HTML below here -->

需要发生的事情是脚本在处理 PHP 部分时执行 die(),然后不发送任何 HTML。原因是,使用 PHP 本身回显/打印的 HTML 太多了,这使得编辑更加麻烦。

4

4 回答 4

2

尝试使用 php 的状态码作为响应header():

if ($error)
{
header('HTTP/1.1 500 Internal Server Error');
 exit();
}

or 

header('HTTP/1.1 500 Internal Server Error');
exit();
于 2013-09-26T21:53:38.193 回答
1

你可以尝试类似的东西

if (!$error):
?>
    <!--- HTML here --->
<?php
endif;
?>
于 2013-09-26T21:30:04.653 回答
1

您可以通过使错误处理程序抛出异常来使每个错误都致命:

<?php
/**
 * throw exceptions based on E_* error types
 */
set_error_handler(function ($err_severity, $err_msg, $err_file, $err_line, array $err_context)
{
    // error was suppressed with the @-operator
    if (0 === error_reporting()) { return false;}
    throw new ErrorException("A $err_severity had occurred: $err_msg");
});

请注意,这将使所有事情都变得致命,包括警告和通知,并完全停止您的脚本。

于 2013-09-26T21:35:48.060 回答
0

这里有很多很棒的答案,@TheWolf 的答案是我会使用的,但 exit 和 die 也是有效的。

如果您的脚本正在生成错误,那么您需要适当地处理它们。您是否希望您的脚本有时会失败?

如果你抛出一个新的 ErrorException,放在 try catch 块中

于 2013-09-26T23:08:05.800 回答