I reopened the original bug reported that lead to your change.

At the moment I am trying to fix that. I moved your code a few lines down in
zend_alter_ini_entry but until now with no success.

I suppose there is something special with error reporting that corrupts it.
It seems that it does not like it to be changed to ZEND_INI_SYSTEM because
the @operator tries to change the value (e.g. in zend_vm_execute.h), which
fails silently:

static int ZEND_BEGIN_SILENCE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
        zend_op *opline = EX(opline);

        Z_LVAL(EX_T(opline->result.u.var).tmp_var) = EG(error_reporting);
        Z_TYPE(EX_T(opline->result.u.var).tmp_var) = IS_LONG;  /* shouldn't
be necessary */
        if (EX(old_error_reporting) == NULL) {
                EX(old_error_reporting) =
&EX_T(opline->result.u.var).tmp_var;
        }

        if (EG(error_reporting)) {
                zend_alter_ini_entry("error_reporting",
sizeof("error_reporting"), "0", 1, ZEND_INI_USER, ZEND_INI_STAGE_RUNTIME);
        }
        ZEND_VM_NEXT_OPCODE();
}
-----
Uwe Schindler
[EMAIL PROTECTED] - http://www.php.net
NSAPI SAPI developer
Bremen, Germany


> -----Original Message-----
> From: Antony Dovgal [mailto:[EMAIL PROTECTED]
> Sent: Friday, August 03, 2007 3:15 PM
> To: Uwe Schindler
> Cc: 'Ilia Alshanetsky'; 'PHP Internals'
> Subject: Re: [PHP-DEV] 5.2.4RC1 Released
> 
> On 03.08.2007 16:04, Uwe Schindler wrote:
> > I know how this is meant. But without the added patch, it does not
> corrupt
> > error_reporting. The problem is that your patch is not compatible to a
> > webserver that runs more than one request per process (a multithreaded
> one),
> > because it modifies the ini setting in a way that affects later running
> > threads.
> 
> Ok, I see.
> Please fill a bug report and assign it to me, I'll deal with it.
> 
> --
> Wbr,
> Antony Dovgal

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to