2015-12-08 8 views
11

मैं php-fpm और cron कार्यों के साथ php binary (/ usr/bin/php) के साथ nginx के पीछे php चला रहा हूं।PHP7 क्ली बनाम php-fpm

मुझे एक असंगतता मिली है - जब मैं इसे 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-एफ पी एम) के माध्यम से चलाने के लिए, होगा उत्पादन:

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 के इंजन द्वारा स्मृति में संरक्षित किया जा रहा है।

शायद यह एक कॉन्फ़िगरेशन समस्या है। कोई भी इससे पहले या समझा सकता है?

धन्यवाद।

+0

कुछ कैशिंग समस्याओं से ठीक पहले PHP7 जारी किया गया था, शायद उनमें से एक से संबंधित थे। कुछ गति अनुकूलन – exussum

+0

के कारण था और 'php' अंक'/usr/bin/php' करने के लिए सही है, है ना? –

+3

यह एक बग की तरह दिखता है, मैं इसे http://bugs.php.net – Andrea

उत्तर