I just upgraded to PHP 5.2.10 (from 5.2.9) and now I get the following error accessing piwik:
Declaration of Piwik_Log_APICall::log() should be compatible with that of Piwik_Log::log() in '/path/to/piwik/core/Log/APICall.php' at the line 52
Here's the stack trace:
<a href='/0'>#0</a> Piwik_ErrorHandler(2048, Declaration of Piwik_Log_APICall::log() should be compatible with that of Piwik_Log::log(), /path/to/piwik/core/Log/APICall.php, 52, Array ()) called at [/path/to/piwik/core/Piwik.php:1232] <a href='/1'>#1</a> Piwik::createLogObject() called at [/path/to/piwik/core/Piwik.php:1232] <a href='/2'>#2</a> Piwik::createLogObject() called at [/path/to/piwik/core/FrontController.php:232] <a href='/3'>#3</a> Piwik_FrontController->init() called at [/path/to/piwik/index.php:53]
I just wrote a detailed bug report concerning my reopening of the bug, but when I tried to add the attachment, Trac unfortunately killed the text content. Sorry for the inconvenience. Here it is again:
The method declaration mismatch still occurs, as you can see, in two lines of the piwik code:
Declaration of Piwik_Log_Error::log() should be compatible with that of Piwik_Log::log() in '/var/www/stats.genetsis.de/htdocs/piwik/core/Log/Error.php' at the line 65
Declaration of Piwik_Log_APICall::log() should be compatible with that of Piwik_Log::log() in '/var/www/stats.genetsis.de/htdocs/piwik/core/Log/APICall.php' at the line 62
Changing the method signatures would be a quick and working fix for that. See the attached file logger.patch.
Anyhow, I did some research regarding the PHP version issue and found this bug addressing an inconsistency issue between the PHP's documentation and its actual behaviour when using set_error_handler. PHP now always executes the custom error handler function regardless of any error_reporting() settings.
Because of that, and because of the two errors mentioned above, piwik's error handler now fails (see ErrorHandler.php, line 37) and as a result of that, it blindly exits the application.
A fix for that could be to ignore non-fatal errors such as E_NOTICE, E_USER_NOTICE and E_STRICT before exiting (see attached file errorhandler.patch), but I suggest that you do some detailed testing on that and PHP 5.2.10 in general. :-)
if it is a bug in PHP then we don't want to work around this, especially since the bug appears to have been fixed in PHP CVS.
(In ) fixes #821 - rename the log() method in subclasses of Piwik_Log because
PHP (by design) isn't intended to support overloading to the extent of other
OOP languages (i.e., "multiple methods with the same name but different
quantities and types of arguments")
this change arises because PHP 5.2.10 escalated the log message
priority for incompatible method declarations