提问人:Nikita 웃 提问时间:5/22/2014 更新时间:6/11/2020 访问量:1932
PHP 错误报告到屏幕,带有换行符
PHP Error Reporting to Screen, with Line Breaks
问:
我在脚本顶部报告了设置错误
// 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
有没有办法使输出也显示到屏幕上,并带有换行符,以便更容易阅读?
谢谢。
答:
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;">');
评论
ini_set('html_errors', true);