@anonymous-matomo-user opened this Issue on March 5th 2012

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);

@robocoder commented on March 5th 2012 Contributor

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.

@robocoder commented on March 6th 2012 Contributor

From http://ca2.php.net/manual/en/errorfunc.configuration.php#ini.display-errors

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.

@robocoder commented on March 6th 2012 Contributor

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

@robocoder commented on March 6th 2012 Contributor

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

I just tested:

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

vs

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

And the latter DID suppress the fatal error.

@robocoder commented on March 6th 2012 Contributor

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

@anonymous-matomo-user commented on March 6th 2012

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';

or

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

This Issue was closed on March 21st 2012
Powered by GitHub Issue Mirror