Подтвердить что ты не робот

PHP7 cli vs php-fpm

Я запускаю php за nginx с php-fpm и cron-задачами в php файл (/usr/bin/php).

Я нашел несогласованность - тот же самый script выводит разные результаты, когда я запускаю его через двоичный файл php и через fpm.

ПРИМЕЧАНИЕ. Это относится только к PHP7. На другом сервере я тестировал его с 5.6, и результат идентичен.

Вот что я нашел. Следующий script:

<?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, результат отличается:

[[email protected] web]# php -f test.php
stdClass Object
(
    [children] => Array
        (
            [0] => 1
            [1] => 1
        )
)

Это не происходит без (объекта) кастинга. Также, если я создам $arr с помощью new stdClass(), этого не произойдет.

Кажется, что $arr = (object) сохраняется в памяти с помощью php7 engine.

Возможно, это проблема конфигурации. Кто-нибудь сталкивался с ним раньше или может объяснить?

Спасибо.

4b9b3361