PHP 错误报告到屏幕,带有换行符

PHP Error Reporting to Screen, with Line Breaks

提问人:Nikita 웃 提问时间:5/22/2014 更新时间:6/11/2020 访问量:1932

问:

我在脚本顶部报告了设置错误

// Report all PHP errors
error_reporting(-1);
// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 'On');  //On or Off

报告正在记录/保存到我的错误日志文件中,并带有换行符,但在屏幕上显示为 1 个连续行,没有换行符。

屏幕输出示例:

Warning: getimagesize(i): failed to open stream: No such file or directory in /home/xyzxyz/public_html/fetcher.php on line 48 Warning: Division by zero in /home/xyzxyz/public_html/fetcher.php on line 49 Warning: imagecreatefromjpeg(i): failed to open stream: No such file or directory in /home/xyzxyz/public_html/fetcher.php on line 62 Warning: imagecreatetruecolor(): Invalid image dimensions in /home/xyzxyz/public_html/fetcher.php on line 64 Warning: imagecopyresampled() expects parameter 1 to be resource, boolean given in /home/xyzxyz/public_html/fetcher.php on line 66 Warning: imagejpeg() expects parameter 1 to be resource, boolean given in /home/xyzxyz/public_html/fetcher.php on line 72

错误日志文件示例:

[22-May-2014 16:42:32 Asia/Tokyo] PHP Warning:  getimagesize(i): failed to open stream: No such file or directory in /home/xyzxyz/public_html/fetcher.php on line 48
[22-May-2014 16:42:32 Asia/Tokyo] PHP Warning:  Division by zero in /home/xyzxyz/public_html/fetcher.php on line 49
[22-May-2014 16:42:32 Asia/Tokyo] PHP Warning:  imagecreatefromjpeg(i): failed to open stream: No such file or directory in /home/xyzxyz/public_html/fetcher.php on line 62
[22-May-2014 16:42:32 Asia/Tokyo] PHP Warning:  imagecreatetruecolor(): Invalid image dimensions in /home/xyzxyz/public_html/fetcher.php on line 64
[22-May-2014 16:42:32 Asia/Tokyo] PHP Warning:  imagecopyresampled() expects parameter 1 to be resource, boolean given in /home/xyzxyz/public_html/fetcher.php on line 66
[22-May-2014 16:42:32 Asia/Tokyo] PHP Warning:  imagejpeg() expects parameter 1 to be resource, boolean given in /home/xyzxyz/public_html/fetcher.php on line 72

有没有办法使输出也显示到屏幕上,并带有换行符,以便更容易阅读?

谢谢。

php 报告错误 日志

评论

2赞 oliver nadj 5/22/2014
你可以使用 Ctrl+U 或安装 xdebug (stackoverflow.com/questions/5504152/...)
0赞 Nikita 웃 5/22/2014
谢谢,@oliver.nadj,很好的解决方法。我通过添加到脚本的顶部来修复它ini_set('html_errors', true);

答:

1赞 Fluffeh 5/22/2014 #1

您可以在代码中使用换行符或 HTML 在警告和错误之间插入所需的内容:

$error = "some warning";
echo $error;
echo $error;

将输出:

some warningsome warning

但是,您可以向其添加 BR 以在浏览器中正确显示:

$error = "some warning";
echo $error."<br />";
echo $error."<br />";

这将在浏览器中输出以下内容:

some warning
some warning

或者,如果您使用的是终端,或者将文本输出到屏幕(而不是 HTML),则可以使用非 html 换行符:

$error = "some warning";
echo $error."\r\n";
echo $error."\r\n";

这会将换行符放入普通文本中。

您可以将它们混合搭配在一起以满足您的需求。您可以做的另一件事是在错误消息周围使用和标记,以便它们显示在浏览器和/或文本文件中,就像错误消息本身一样:<pre></pre>

$error = "some warning";
echo "<pre>";
echo $error;
echo $error;
echo "</pre>";

编辑:如果您生成了许多实际上并非故意显示的警告/错误,您还可以修改以下内容:

html_errors = 1

在您的PHP.ini文件中,它会将内容输出为漂亮的 HTML 格式

评论

0赞 Nikita 웃 5/22/2014
谢谢你的回答。错误是由PHP引擎生成的,它们不是代码的一部分。那么我该如何用 br 或 \r\n 格式化它们呢?
0赞 Fluffeh 5/22/2014
@CreativeMind我以为您是通过检查手动输出错误。我为自动生成的PHP内容添加了编辑。
0赞 Nikita 웃 5/22/2014
谢谢,这解决了它。我添加到脚本的顶部,它现在按预期生成输出。ini_set('html_errors', true);
0赞 kiatng 3/11/2020 #2

为了在浏览器中正确显示换行符,我的index.php中有以下内容(PHP7.4)

ini_set('error_prepend_string', '<pre>');
ini_set('error_append_string', '</pre>');
ini_set('display_errors', 1);

此外,要将文本换行到屏幕宽度,请将第一个替换为ini_set

ini_set('error_prepend_string', '<pre style="white-space: pre-wrap;">');