gpt4 book ai didi

PHP7 cli 与 php-fpm

转载 作者:可可西里 更新时间:2023-10-31 22:15:32 24 4
gpt4 key购买 nike

我在 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() );

保存到 test.php。当我通过浏览器 (php-fpm) 运行它时,将产生:

stdClass Object
(
[children] => Array
(
[0] => 1
)
)

但是当我从 CLI 执行它时,结果是不同的:

[root@server1 web]# php -f test.php
stdClass Object
(
[children] => Array
(
[0] => 1
[1] => 1
)
)

没有(对象)转换就不会发生。此外,如果我用 new stdClass() 实例化 $arr,它也不会发生。

似乎 $arr = (object) 被 php7 的引擎保存在内存中。

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

谢谢。

最佳答案

这是 PHP 7 中的一个错误,已报告并已修复:

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

关于PHP7 cli 与 php-fpm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34165881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com