Bug #65845 [Fbk]: Error when Zend Opcache Optimizer is fully enabled
| From: | laruence@php.net | Date: | Tue, 08 Oct 2013 11:02:28 +0000 |
| Subject: | Bug #65845 [Fbk]: Error when Zend Opcache Optimizer is fully enabled | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-182078@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=65845&edit=1
ID: 65845
Updated by: laruence@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:
>".vide($Pile['vars'][$zzz=(string)'toto'] =
'tutu')."<<br />";
echo "This should echo \"tutu\" string:
>".table_valeur($Pile['vars'],'toto')."<<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:
>".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] laruence@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