[
https://issues.apache.org/jira/browse/LOG4PHP-117?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12872180#action_12872180
]
Maciej Mazur commented on LOG4PHP-117:
--------------------------------------
I don't remember how i did this :) I belive a just manually added spaces
> LoggerConfiguratorIni::configure() and unexptected results from
> error_get_last()
> --------------------------------------------------------------------------------
>
> Key: LOG4PHP-117
> URL: https://issues.apache.org/jira/browse/LOG4PHP-117
> Project: Log4php
> Issue Type: Bug
> Components: Code
> Affects Versions: 2.0
> Reporter: Maciej Mazur
> Fix For: 2.1
>
> Attachments: error_get_last_patch, error_get_last_patch_v2
>
>
> This apply to src/main/php/configurators/LoggerConfiguratorIni.php
> If you invoke LoggerConfiguratorIni::configure() after there was any notice
> or warning in your PHP script, then LoggerConfiguratorIni will throw an
> exception even if there is no need (propably terminating execution)
> 284 public function configure(LoggerHierarchy $hierarchy, $url =
> '') {
> 285 $properties = @parse_ini_file($url);
> 286 if ($properties === false || count($properties) == 0) {
> 287 $error = error_get_last();
> 288 throw new LoggerException("LoggerConfiguratorIni:
> ".$error['message']);
> 289 }
> 290 return $this->doConfigureProperties($properties,
> $hierarchy);
> 291 }
> In line 287 it is checked if there was any error triggered by function
> parse_ini_file(). Unfortunately function error_get_last() doesn't return an
> error triggered by execution of the last function. It returnes an error that
> is most recent in global, even if it was already catched and taken care of.
> This is because there is no way to reset the state of the last error. It
> returns always the last triggered error.
> (http://www.php.net/manual/en/function.error-get-last.php#83608)
> I attached the patch that "solves" this by triggering an empty error before
> parse_ini_file(), and the it is checked if the error has an empty message:
> public function configure(LoggerHierarchy $hierarchy, $url = '') {
> @trigger_error('');
> $properties = @parse_ini_file($url);
> if ($properties === false || count($properties) == 0) {
> $error = error_get_last();
> if ($error['message'] != '') {
> throw new
> LoggerException("LoggerConfiguratorIni: ".$error['message']);
> }
> }
> return $this->doConfigureProperties($properties, $hierarchy);
> }
> This not very pretty but it works
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.