如何显示php错误?

zqry0prt  于 2021-08-09  发布在  Java
关注(0)|答案(28)|浏览(497)

我已经检查了我的php ini文件( php.ini )以及 display_errors 已设置,并且错误报告也已设置 E_ALL . 我已经重新启动了apache Web服务器。
我甚至把这些行放在我的脚本的顶部,它甚至不捕捉简单的解析错误。例如,我用 "$" 我不会结束陈述 ";" . 但是我所有的脚本都会在这些错误上显示一个空白页,但是我想在浏览器输出中看到错误。

error_reporting(E_ALL);
ini_set('display_errors', 1);

还有什么事要做?

8aqjt8rx

8aqjt8rx1#

这对我总是有用的:

ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);

但是,这不会使php显示解析错误-显示这些错误的唯一方法是使用以下行修改php.ini:

display_errors = on

(如果您无法访问 php.ini ,然后把这条线放进去 .htaccess 可能也有用):

php_flag display_errors 1
bqujaahr

bqujaahr2#

在运行时启用错误输出时,您无法捕获解析错误,因为它在实际执行任何操作之前解析文件(并且由于在此过程中遇到错误,因此不会执行任何操作)。您需要更改实际的服务器配置,以便启用“显示错误”,并使用适当的错误报告级别。如果您没有访问php.ini的权限,则可以使用.htaccess或类似的工具,具体取决于服务器。
此问题可能提供其他信息。

ngynwnxp

ngynwnxp3#

在php.ini中:

display_errors = on

然后重新启动web服务器。

ki1q1bka

ki1q1bka4#

要显示所有错误,您需要:
1.在从浏览器调用的php脚本中包含这些行(通常是 index.php ):

error_reporting(E_ALL);
ini_set('display_errors', '1');

2.(a)确保此脚本没有语法错误
-或者-
2.(b)套 display_errors = On 在你的 php.ini 否则,它连这两条线都跑不了!
您可以通过运行(在命令行)检查脚本中的语法错误:

php -l index.php

如果包含来自另一个php脚本的脚本,那么它将在包含的脚本中显示语法错误。例如: index.php ```
error_reporting(E_ALL);
ini_set('display_errors', '1');

// Any syntax errors here will result in a blank screen in the browser

include 'my_script.php';
`my_script.php`
adjfkj // This syntax error will be displayed in the browser

wbrvyc0a

wbrvyc0a5#

一些web宿主提供程序允许您在 .htaccess 文件。
可以添加以下行:

php_value display_errors 1

我和你有同样的问题,这个解决方案解决了。

swvgeqrz

swvgeqrz6#

您可能会发现“错误报告”或“显示错误”的所有设置在php中似乎都不起作用 7.这是因为错误处理发生了变化。请尝试以下操作:

try{
     // Your code
} 
catch(Error $e) {
    $trace = $e->getTrace();
    echo $e->getMessage().' in '.$e->getFile().' on line '.$e->getLine().' called from '.$trace[0]['file'].' on line '.$trace[0]['line'];
}

或者,一次性捕获异常和错误(这与php不向后兼容) 5):

try{
     // Your code
} 
catch(Throwable $e) {
    $trace = $e->getTrace();
    echo $e->getMessage().' in '.$e->getFile().' on line '.$e->getLine().' called from '.$trace[0]['file'].' on line '.$trace[0]['line'];
}
nkcskrwz

nkcskrwz7#

error_reporting(1);
     ini_set('display_errors', '1');
     ini_set('display_startup_errors', '1');
     error_reporting(E_ALL);

把这个放在你的页首。

o0lyfsai

o0lyfsai8#

在unix cli中,只将错误重定向到文件是非常实际的:

./script 2> errors.log

从你的剧本中,要么用 var_dump() 或与往常一样的等效文件(stdout和stderr都将接收输出),但只在日志文件中写入:

fwrite(STDERR, "Debug infos\n"); // Write in errors.log^

然后从另一个shell,进行实时更改:

tail -f errors.log

或者只是

watch cat errors.log
de90aj5v

de90aj5v9#

您可以通过简单的方式在显示器中显示php错误。首先,把下面的代码放到php.ini文件中。

display_errors = on;

(如果您没有访问php.ini的权限,那么将这一行放入.htaccess也可以):

php_flag display_errors 1

或者也可以在index.php文件中使用以下代码

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
bihw5rsg

bihw5rsg10#

如果在命令行上,您可以运行 php-ddisplay_errors=1 替代中的设置 php.ini :

php -ddisplay_errors=1 script.php
dohp0rv5

dohp0rv511#

报告除e\ U通知外的所有错误

error_reporting(E_ALL & ~E_NOTICE);

显示所有php错误

error_reporting(E_ALL);  or ini_set('error_reporting', E_ALL);

关闭所有错误报告

error_reporting(0);
kyxcudwk

kyxcudwk12#

您可能需要使用以下代码:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
i2loujxw

i2loujxw13#

如果安装了xdebug,则可以通过以下设置覆盖每个设置:

xdebug.force_display_errors = 1;
xdebug.force_error_reporting = -1;

强制显示错误
type:int,默认值:0,在xdebug>=2.3中引入,如果此设置设置为1,则无论php的display\u errors设置如何,都将始终显示错误。
强制错误报告
类型:int,默认值:0,在xdebug>=2.3中引入此设置是位掩码,类似于错误报告。此位掩码将与错误表示的位掩码进行逻辑或运算,并向dermine报告应显示的错误。此设置只能在php.ini中进行,并允许您强制显示某些错误,无论应用程序如何使用ini\u set()。

uqxowvwt

uqxowvwt14#

您可以通过更改php.ini文件并添加以下内容来实现

display_errors = on
display_startup_errors = on

或者你也可以使用下面的代码,因为这总是适合我

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
3htmauhk

3htmauhk15#

写下:

error_reporting(-1);

相关问题