Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP


display_errors is always set to On. It should honor the php.ini setting instead #3009

anonymous-piwik-user opened this Issue · 6 comments

2 participants

Anonymous Piwik user Anthon Pang
Anonymous Piwik user

As put in evidence by the "security" plugin, display_errors is always on by default.

The line:
ini_set('display_errors', (!defined('PIWIK_DISPLAY_ERRORS') || PIWIK_DISPLAY_ERRORS) ? 1 : 0);

should be:
ini_set('display_errors', (defined('PIWIK_DISPLAY_ERRORS') && PIWIK_DISPLAY_ERRORS) ? 1 : 0);

Anthon Pang

It's a bit more complicated than that. In newer php versions, that line actually has no effect (ie can only be set in php.ini). And depending on the php version, it can be a non-boolean value (which PhpSecInfo doesn't recognize).

The fix is to remove the line, update the bootstrap.php docs, and fix PhpSecInfo detection.

Anthon Pang


Although display_errors may be set at runtime (with ini_set()), it won't have any affect if the script has fatal errors. This is because the desired runtime action does not get executed.

Anthon Pang

(In [5973]) refs #3009 - don't set display_errors in vain; updated online docs (re: bootstrap.php)

Anthon Pang

Haha... it's a bug in the php documentation.

I just tested:

<?php ini_set('display_errors', 1); require_once('nonexistent.php');


<?php ini_set('display_errors', 0); require_once('nonexistent.php');

And the latter DID suppress the fatal error.

Anthon Pang

(In [5974]) fixes #3009 - display_errors now defaults to disabled; leaving PhpSecInfo "as is" because ini_set("display_errors", "stderr") is still leaky

Anonymous Piwik user

About the line:

<?php ini_set('display_errors', 0); require_once('nonexistent.php');

What you are probably seeing is a blank page. Which is neither a bug in the php doc nor in the php execution:
. the script is halted with a fatal error - you will find it in the error log
. no error message is printed to screen

More meaningful tests are:

<?php ini_set('display_errors', 0); require_once('nonexistent.php'); echo 'hi';


<?php require_once('nonexistent.php'); ini_set('display_errors', 0);

This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.