PHP7 cli与php fpm

PHP7 cli与php fpm,php,php-7,Php,Php 7,我在nginx后面运行php,将php fpm和cron任务转换为php二进制文件(/usr/bin/php) 我发现了一个不一致的地方——当我通过php二进制文件和fpm运行同一个脚本时,它会输出不同的结果 注意这仅适用于PHP7。在另一台服务器上,我用5.6对其进行了测试,结果是相同的 这是我发现的。以下脚本: <?php class Test { public function test(){ $arr = (object) [ 'ch

我在nginx后面运行php,将php fpm和cron任务转换为php二进制文件(/usr/bin/php)

我发现了一个不一致的地方——当我通过php二进制文件和fpm运行同一个脚本时,它会输出不同的结果

注意这仅适用于PHP7。在另一台服务器上,我用5.6对其进行了测试,结果是相同的

这是我发现的。以下脚本:

<?php
class Test {
    public function test(){
        $arr = (object) [
            'children' => []
        ];
        $arr->children[] = 1;
        return $arr;
    }
}

$o = new Test();
$o->test();
print_r( $o->test() );
但当我从CLI执行它时,结果不同:

[root@server1 web]# php -f test.php
stdClass Object
(
    [children] => Array
        (
            [0] => 1
            [1] => 1
        )
)
如果没有(对象)投射,则不会发生。另外,如果我将用
新stdClass()
实例化
$arr
,则不会发生这种情况

似乎php7的引擎正在内存中保存
$arr=(对象)

可能是配置问题。以前有人碰到过或者能解释一下吗


谢谢。

这是PHP7中的一个错误,已报告,现已修复:


在PHP7发布之前,出现了一些缓存问题,可能与其中一个有关。是由于一些速度优化和做了
哪些php
指向
/usr/bin/php
,对吗?这看起来像个bug,我建议您在报告它。您可以用您正在运行的PHP7版本更新吗?是的,@Andrea,看起来它是在rc2中引入的,存在于gold master和7.1中。但是只影响类。
[root@server1 web]# php -f test.php
stdClass Object
(
    [children] => Array
        (
            [0] => 1
            [1] => 1
        )
)