如何显示php错误?

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

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

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

还有什么事要做?

fhity93d

fhity93d1#

您可以执行以下操作:
在主索引文件中设置以下参数:

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

然后根据您的要求,您可以选择要显示的内容:
对于所有错误、警告和通知:

error_reporting(E_ALL); OR error_reporting(-1);

对于所有错误:

error_reporting(E_ERROR);

对于所有警告:

error_reporting(E_WARNING);

对于所有通知:

error_reporting(E_NOTICE);

更多信息,请点击这里。

nkcskrwz

nkcskrwz2#

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

把这个放在你的页首。

o0lyfsai

o0lyfsai3#

在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

de90aj5v4#

您可以通过简单的方式在显示器中显示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

bihw5rsg5#

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

php -ddisplay_errors=1 script.php
dohp0rv5

dohp0rv56#

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

error_reporting(E_ALL & ~E_NOTICE);

显示所有php错误

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

关闭所有错误报告

error_reporting(0);
kyxcudwk

kyxcudwk7#

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

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

i2loujxw8#

如果安装了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

uqxowvwt9#

您可以通过更改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

3htmauhk10#

写下:

error_reporting(-1);
s71maibg

s71maibg11#

<?php
    // Turn off error reporting
    error_reporting(0);

    // Report runtime errors
    error_reporting(E_ERROR | E_WARNING | E_PARSE);

    // Report all errors
    error_reporting(E_ALL);

    // Same as error_reporting(E_ALL);
    ini_set("error_reporting", E_ALL);

    // Report all errors except E_NOTICE
    error_reporting(E_ALL & ~E_NOTICE);
    ?>

当您的站点处于活动状态时 php.ini 出于安全原因,文件应禁用显示错误。但是,对于开发环境,可以启用显示错误以进行故障排除。

6yt4nkrj

6yt4nkrj12#

如果是快速调试的话,最好的/简单的/快速的解决方案就是用捕获异常来包围代码。当我想在生产中快速检查一些东西时,我就是这么做的。

try {
    // Page code
}
catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}
lfapxunr

lfapxunr13#

上面的代码应该起作用:

error_reporting(E_ALL);

但是,请尝试编辑文件中手机上的代码:

error_reporting =on
jchrr9hc

jchrr9hc14#

您可以添加自己的自定义错误处理程序,它可以提供额外的调试信息。此外,您可以将其设置为通过电子邮件向您发送信息。

function ERR_HANDLER($errno, $errstr, $errfile, $errline){
    $msg = "<b>Something bad happened.</b> [$errno] $errstr <br><br>
    <b>File:</b> $errfile <br>
    <b>Line:</b> $errline <br>
    <pre>".json_encode(debug_backtrace(), JSON_PRETTY_PRINT)."</pre> <br>";

    echo $msg;

    return false;
}

function EXC_HANDLER($exception){
    ERR_HANDLER(0, $exception->getMessage(), $exception->getFile(), $exception->getLine());
}

function shutDownFunction() {
    $error = error_get_last();
    if ($error["type"] == 1) {
        ERR_HANDLER($error["type"], $error["message"], $error["file"], $error["line"]);
    }
}

set_error_handler ("ERR_HANDLER", E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);
register_shutdown_function("shutdownFunction");
set_exception_handler("EXC_HANDLER");
8aqjt8rx

8aqjt8rx15#

这对我总是有用的:

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

相关问题