每当PHP输出错误消息时,它会忽略css和设计精美的页面,方法是输出页面顶部的消息,删除任何阻碍它的方式。
例如
some code} else {
echo "error, please do something!";
我如何得到它(或者很好地问)在我的css中已经存在的div中输出文本,以便它遵守该div附带的格式和对齐规则。
答案 0 :(得分:14)
您可以使用following php.ini
设置:
error_prepend_string = "<div class='error'>"
error_append_string = "</div>"
或者那种效果。
答案 1 :(得分:7)
修改强>
实际上,我刚刚意识到你所说的“错误”涉及回声/打印输出。这是问题所在。
您print
(echo
)字符串错误直接输出缓冲区(当您运行完所有代码时将HTML发送到浏览器)。 echo()
和print()
会直接发送您正在回复/打印的内容,除非它位于output_buffer
块中(我不会将此处的详细信息与您混淆)。
因此,您正在管理常规的html /文本输出,以便将print
页面内容输出到输出缓冲区,但在这种情况下,您使用的是echo
,它将字符串数据直接发送到缓冲区AT THAT MOMENT。
例如:
您的问题只是一个简单的例子
<?php
$mystr = "<html>";
$mystr .= "<body><h1>Hello World</h1></body></html>";
echo "<head></head>";
echo $mystr;
?>
哪会让我输出到浏览器:
<head></head><html><body><h1>Hello World</h1></body></html>
我正在存储字符串数据,但在echo
其他html数据之前echo
HEAD块。
我需要做的是:
<?php
$mystr = "<html>";
$mystr .= "<head></head>";
$mystr .= "<body><h1>Hello World</h1></body></html>";
echo $mystr;
?>
哪会让我输出到浏览器:
<html><head></head><body><h1>Hello World</h1></body></html>
我存储字符串输出(在这种情况下是你的错误),直到我需要稍后输出。这是您需要知道的,并在您的代码中完成。
我会调查error_reporting(0)
/ display_errors
,error_get_last
和set_error_handler
。
http://www.php.net/manual/en/function.error-reporting.php
http://www.php.net/manual/en/errorfunc.configuration.php#ini.display-errors
http://php.net/manual/en/function.error-get-last.php
http://www.php.net/manual/en/function.set-error-handler.php
这样您就可以立即停止将所有错误发送到输出缓冲区(这就是为什么它位于页面顶部),然后捕获,存储并显示错误。
error_reporting(0);
set_error_handler('phpLogError');
function phpLogError() {
$error = error_get_last();
if ($error['type'] == 1) {
//do your stuff
}
}
function phpGetLoggedErrors() {
// return your prettified html errors
}
或者,换句话说......
<强> php_error_handle.php 强>
<?php
$GLOBAL['_logged_php_errors'] = array();
error_reporting(0);
set_error_handler('phpLogError');
function phpLogError() {
global $_logged_php_errors;
$error = error_get_last();
if ($error['type'] == 1) {
$_logged_php_errors[] = "<span>$error</span>";
}
}
function phpGetLoggedErrors() {
global $_logged_php_errors;
return "<ol><li>".implode('</li><li>',$_logged_php_errors)."</li></ol>";
}
?>
<强> other.php 强>
<?php
require_once 'php_error_handle.php';
// other stuff, pages included/required, etc...
请确保在第一行代码中发生此require_once。
答案 2 :(得分:2)
将@mario扩展到上面,我已经在我的php文件的顶部使用了这个(在开发中,当然不是生产!)这很好用。即使在Wordpress管理文件中!
scala
答案 3 :(得分:0)
答案 4 :(得分:0)
echo '<div class="yourerrorclass">error, please do something!</div>';
如果它在输出中的位置错误,那是因为您过早输出错误。整个HTML由PHP顺序输出。如果您在任何其他HTML之前输出错误,则错误将出现在页面顶部,实际上会使您的HTML无效。
答案 5 :(得分:0)
在生产中运行时,应该完全禁止向屏幕显示错误,而是将它们记录到文件中以进行检查和修复。有详细信息,以及php.ini文件中的建议设置。