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