Edit report at https://bugs.php.net/bug.php?id=65845&edit=1

 ID:                 65845
 Updated by:         larue...@php.net
 Reported by:        bruno+php at ahennezel dot info
 Summary:            Error when Zend Opcache Optimizer is fully enabled
 Status:             Feedback
 Type:               Bug
 Package:            opcache
 Operating System:   Linux 3.11.2-1-ARCH
 PHP Version:        5.5.4
 Block user comment: N
 Private report:     N

 New Comment:

hmm, I run this with opcache enable, and fully optimizer. 

seems the output is expected?

"
$ php55 -d opcache.enable=1 -d opcache.optimization_level=0xffffffff /tmp/1.php
This should echo empty string:
This should echo "tutu" string: tutu
"


Previous Comments:
------------------------------------------------------------------------
[2013-10-08 10:44:11] brunobergot at gmail dot com

Me again, here is a last test script that work without changing 
opcache.optimization_level :

<h1>APC BUG</h1>
<?php
// Expected :
// APC BUG
// This should echo empty string: ><
// This should echo "tutu" string: >tutu<


function table_valeur($table, $cle, $defaut='') {
    foreach (explode('/', $cle) as $k) {

        $table = is_string($table) ? @unserialize($table) : $table;

        if (is_object($table)) {
            $table =  (($k !== "") and isset($table->$k)) ? $table->$k : 
$defaut;
        } elseif (is_array($table)) {
            $table = isset($table[$k]) ? $table[$k] : $defaut;
        } else {
            $table = $defaut;
        }
    }
    return $table;
}

function vide($texte){
    return "";
}

echo "This should echo empty string: 
&gt;".vide($Pile['vars'][$zzz=(string)'toto'] = 'tutu')."&lt;<br />";
echo "This should echo \"tutu\" string: 
&gt;".table_valeur($Pile['vars'],'toto')."&lt;<br />";

?>

------------------------------------------------------------------------
[2013-10-08 10:30:33] brunobergot at gmail dot com

Hi again Laruence,

We found that the problem comes form the cast in $Pile['vars'][(string)'toto']. 
With this news test script it works as expected :

<h1>APC BUG</h1>
<?php
// Expected :
// APC BUG
// This should echo empty string: ><
// This should echo "tutu" string: >tutu<

// Works as expected with opcache.optimization_level=0xffffffef in php.ini


function table_valeur($table, $cle, $defaut='') {
var_dump($table);
var_dump($cle);
var_dump($table[$cle]);
    foreach (explode('/', $cle) as $k) {

        $table = is_string($table) ? @unserialize($table) : $table;

        if (is_object($table)) {
            $table =  (($k !== "") and isset($table->$k)) ? $table->$k : 
$defaut;
        } elseif (is_array($table)) {
            $table = isset($table[$k]) ? $table[$k] : $defaut;
        } else {
            $table = $defaut;
        }
    }
    return $table;
}

function vide($texte){
    return "";
}

echo "This should echo empty string: &gt;".vide($Pile['vars']['toto'] = 
'tutu')."&lt;<br />";
echo "This should echo \"tutu\" string: 
&gt;".table_valeur($Pile['vars'],'toto')."&lt;<br />";

?>

------------------------------------------------------------------------
[2013-10-08 10:17:30] brunobergot at gmail dot com

Hi Laurence,

Here is a script that show the bug in action :

<h1>APC BUG</h1>
<?php
// Expected :
// APC BUG
// This should echo empty string: ><
// This should echo "tutu" string: >tutu<

// Works as expected with opcache.optimization_level=0xffffffef in php.ini


function table_valeur($table, $cle, $defaut='') {
    foreach (explode('/', $cle) as $k) {

        $table = is_string($table) ? @unserialize($table) : $table;

        if (is_object($table)) {
            $table =  (($k !== "") and isset($table->$k)) ? $table->$k : 
$defaut;
        } elseif (is_array($table)) {
            $table = isset($table[$k]) ? $table[$k] : $defaut;
        } else {
            $table = $defaut;
        }
    }
    return $table;
}

function vide($texte){
    return "";
}

echo "This should echo empty string: &gt;".vide($Pile['vars'][(string)'toto'] = 
'tutu')."&lt;<br />";
echo "This should echo \"tutu\" string: 
&gt;".table_valeur($Pile['vars'],'toto')."&lt;<br />";

?>

------------------------------------------------------------------------
[2013-10-08 05:56:39] larue...@php.net

Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves. 

A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external 
resources such as databases, etc. If the script requires a 
database to demonstrate the issue, please make sure it creates 
all necessary tables, stored procedures etc.

Please avoid embedding huge scripts into the report.

hmm, are you able to get the compiled SPIP view file?  it must be a PHP script 
which can be used to reproduce this problem?

------------------------------------------------------------------------
[2013-10-06 18:13:34] bruno+php at ahennezel dot info

Wrong package : Opcache

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=65845


-- 
Edit this bug report at https://bugs.php.net/bug.php?id=65845&edit=1

Reply via email to