Edit report at https://bugs.php.net/bug.php?id=65845&edit=1
ID: 65845
Comment by: brunobergot at gmail dot com
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:
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:
>".vide($Pile['vars'][$zzz=(string)'toto'] = 'tutu')."<<br />";
echo "This should echo \"tutu\" string:
>".table_valeur($Pile['vars'],'toto')."<<br />";
?>
Previous Comments:
------------------------------------------------------------------------
[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: >".vide($Pile['vars']['toto'] =
'tutu')."<<br />";
echo "This should echo \"tutu\" string:
>".table_valeur($Pile['vars'],'toto')."<<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: >".vide($Pile['vars'][(string)'toto'] =
'tutu')."<<br />";
echo "This should echo \"tutu\" string:
>".table_valeur($Pile['vars'],'toto')."<<br />";
?>
------------------------------------------------------------------------
[2013-10-08 05:56:39] [email protected]
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
------------------------------------------------------------------------
[2013-10-06 18:10:34] bruno+php at ahennezel dot info
Typo : With opcache.optimization_level=0xffffffef the result is "value".
------------------------------------------------------------------------
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