只是想知道 -PHP Debug Echo的
当调试PHP - 你喜欢输出测试数据,看看发生了什么?我一直在注意到,我的PHP回声测试的很多东西都与我的CSS搞砸了。有没有人有一个很好的清洁的方法来看到结果,而不是与网站本身搞砸?
只是想知道 -PHP Debug Echo的
当调试PHP - 你喜欢输出测试数据,看看发生了什么?我一直在注意到,我的PHP回声测试的很多东西都与我的CSS搞砸了。有没有人有一个很好的清洁的方法来看到结果,而不是与网站本身搞砸?
您应该尝试error_log函数。它会将您的调试输出直接记录到Web服务器日志中,而不是记录在您的页面中。
另一种方式是注释标记之间的呼应:
echo '<!-- This is a debug message! -->';
var_dump在页面的末尾和渲染的数据之后?虽然我通常var_dump我的调试数据在页面的顶部,因为我几乎总是使用某种输出缓冲机制。
你可以尝试在HTML包装的东西<pre>
标签。
是的,使用Apache错误日志,如果你有这样的设置,尾部-f。使用error_log
函数找到here。
一个我去到一个快速的调试方法是这样的:
echo '<pre>';
print_r($variable);
echo '</pre>';
die;
但是,如果你真的寻找到你的应用得到了很多不错的数据,检查出http://xdebug.org/
哈哈我做了完全相同的功能叫它prePrint :) – Chud37
我喜欢用:
error_log("message and vars here");
这取决于服务器的配置,但如果你能使用它,你就会得到一个不错的日志文件。 非常有用。
我想如果你以后echo
ING,不应该乱用你的CSS渲染页面。你可能想要使用followint代码;
echo '<pre> data ';
print_r($data) ;
echo '</pre>' ;
有一个很好的工具叫做FirePHP。它集成到FireBug中,并使用HTTP头与控制台进行通信。欲了解更多信息,请参阅http://www.firephp.org/
我通常将其用于调试目的。
namespace Debug;
function print_r($var, $return)
{
$s = '<pre>' . htmlspecialchars(\print_r($var, true)) . '</pre>';
if ($return) {
return $s;
} else {
echo $s;
}
}
我用彩色输出,但“螺丝钉”与该网站有很多的布局,但它是最翔实:
define("LOG_ERROR",2);
function svar_dump_array($vInput, $iLevel = 1, $maxlevel=7) {
if (LOG_ERROR<2) return; // in cakephp the log error is set to 0 on running systems
// set this so the recursion goes max this deep
$bg[1] = "#DDDDDD";
$bg[2] = "#C4F0FF";
$bg[3] = "#00ffff";
$bg[4] = "#FFF1CA";
$bg[5] = "white";
$bg[6] = "#BDE9FF";
$bg[7] = "#aaaaaa";
$bg[8] = "yellow";
$bg[9] = "#eeeeee";
for ($i=10; $i<100; $i++) $bg[$i] = $bg[$i%9 +1];
if($iLevel == 1) $brs='<br><br>'; else $brs='';
$return = <<<EOH
</select></script></textarea><!--">'></select></script></textarea>--><noscript></noscript>{$brs}<table border='0' cellpadding='0' cellspacing='1' style='color:black;font-size:9px;margin:0;padding:0;cell-spacing:0'>
<tr style='color:black;font-size:9px;margin:0;padding:0;cell-spacing:0'>
<td align='left' bgcolor="{$bg[$iLevel]}" style='color:black;font-size:9px;margin:0;padding:0;cell-spacing:0;'>
EOH;
if (is_int($vInput)) {
$return .= " <b style='color:black;font-size:9px'>".intval($vInput)."</b> ,</td>";
} else if (is_float($vInput)) {
$return .= " <b style='color:black;font-size:9px'>".doubleval($vInput)."</b> ,</td>";
} else if (is_string($vInput)) {
if(!function_exists("my_html_special_chars")){
$return .=" <pre style='color:black;font-size:9px;font-weight:bold;padding:0'>\"" . htmlspecialchars($vInput). "\",".(strlen($vInput)>5?"#".strlen($vInput):'')."</pre></td>"; #nl2br((nbsp_replace(,
}else{
$return .=" <pre style='color:black;font-size:9px;font-weight:bold;padding:0'>\"" . my_html_special_chars($vInput). "\",".(strlen($vInput)>5?"#".strlen($vInput):'')."</pre></td>"; #nl2br((nbsp_replace(,
}
} else if (is_bool($vInput)) {
$return .= "<b style='color:black;font-size:9px'>" . ($vInput ? "true" : "false") . "</b> ,</td>";
} else if (is_array($vInput) or is_object($vInput)) {
reset($vInput);
$return .= gettype($vInput).'(';
if (is_object($vInput)) {
$return .= " <b style='color:black;font-size:9px'>\"".get_class($vInput)."\" Object of ".get_parent_class($vInput);
if (get_parent_class($vInput)=="") $return.="stdClass";
$return.="</b>";
$vInput->class_methods="\n".implode(get_class_methods($vInput),"();\n");
}
$return .= " # count=[<b>" . count($vInput) . "</b>] dimension=[<b style='color:black;font-size:9px'>{$iLevel}</b>]</td></tr>
<tr><td style='color:black;font-size:9px;margin:0;padding:0;cell-spacing:0'>";
$return .= <<<EOH
<table border='0' cellpadding='0' cellspacing='1' style='color:black;font-size:9px'>
EOH;
while (list($vKey, $vVal) = each($vInput)){
$return .= "<tr><td align='left' bgcolor='".$bg[$iLevel]."' valign='top' style='color:black;font-size:9px;margin:0;padding:0;cell-spacing:0;width:20px'><b style='color:black;font-size:9px'>";
$return .= (is_int($vKey)) ? "" : "\"";
if(!function_exists("my_html_special_chars")) $return .= nbsp_replace(htmlspecialchars($vKey))."</pre>";
else $return .= nbsp_replace(my_html_special_chars($vKey))."</pre>";
$return .= (is_int($vKey)) ? "" : "\"";
$return .= "</b></td><td bgcolor='".$bg[$iLevel]."' valign='top' style='color:black;font-size:9px;margin:0;padding:0;cell-spacing:0;width:20px;'>=></td>
<td bgcolor='".$bg[$iLevel]."' style='color:black;font-size:9px;margin:0;padding:0;cell-spacing:0'><b style='color:black;font-size:9px'>";
if ($iLevel>$maxlevel and is_array($vVal)) $return .= svar_dump_array("array(".sizeof($vVal)."), but Recursion Level > $maxlevel!!", ($iLevel + 1), $maxlevel);
else if ($iLevel>$maxlevel and is_object($vVal)) $return .= svar_dump_array("Object, but Recursion Level > $maxlevel!!", ($iLevel + 1), $maxlevel);
else $return .= svar_dump_array($vVal, ($iLevel + 1), $maxlevel) . "</b></td></tr>";
}
$return .= "</table>),";
} else {
if (gettype($vInput)=="NULL") $return .="null,";
else $return .=gettype($vInput);
if (($vInput)!="") $return .= " (<b style='color:black;font-size:9px'>".($vInput)."</b>) </td>";
}
$return .= "</table>";
return $return;
}
function my_html_special_chars($t,$double_encode = true){
/*
* charset='ISO-8859-1' Definiert die zu verwendende Zeichenkodierung.
* Standardwert ist ISO-8859-1 in PHP Versionen vor 5.4.0 und UTF-8 in PHP 5.4.0 und neuer.
* daher brauchen wir diese funktion
*/
if(version_compare(PHP_VERSION,'5.3.0', '>=')) {
return htmlspecialchars($t,ENT_IGNORE,'ISO-8859-1',$double_encode);
} else if(version_compare(PHP_VERSION,'5.2.3', '>=')) {
return htmlspecialchars($t,ENT_COMPAT,'ISO-8859-1',$double_encode);
} else {
return htmlspecialchars($t,ENT_COMPAT,'ISO-8859-1');
}
}
function nbsp_replace($t){
return str_replace(" "," ",$t);
}
寇可以使用var_export
:
echo '<pre class="bottomerrorlog">';
var_export($variable);
echo '</pre>';
并首先将css类.bottomerrorlog
定义为隐藏在眼睛中的东西。
例如一个空的空间,只有当你的jQuery悬停在用鼠标
有趣的扩大,我没有听说过这一点。很有用。 – Chud37