Edit report at http://bugs.php.net/bug.php?id=53903&edit=1
ID: 53903 Updated by: cataphr...@php.net Reported by: acid at rizzt dot kicks-ass dot org Summary: streamwrapper/stream_stat causes problems -Status: Assigned +Status: Closed Type: Bug Package: Streams related Operating System: linux PHP Version: 5.3.5 Assigned To: cataphract Block user comment: N Private report: N New Comment: Fixed in trunk and 5.3. Previous Comments: ------------------------------------------------------------------------ [2011-02-01 23:55:19] cataphr...@php.net Automatic comment from SVN on behalf of cataphract Revision: http://svn.php.net/viewvc/?view=revision&revision=307934 Log: - Fixed bug #53903 (userspace stream stat callback does not separate the elements of the returned array before converting them). ------------------------------------------------------------------------ [2011-02-01 20:24:02] acid at rizzt dot kicks-ass dot org Here is an entire script: # php x.php Warning: Cannot use a scalar value as an array in x.php on line 30 <?php class sw { public function stream_open($path, $mode, $options, &$opened_path) { return true; } public function stream_read($count) { return FALSE; } public function stream_eof() { return true; } public function stream_stat() { return array( 'atime' => $this->undefined, ); } } stream_wrapper_register('sx', 'sw') or die('failed'); file_get_contents('sx://test'); unset($s); $s[] = 1; // Cannot use a scalar value as an array print_r($s); ? ------------------------------------------------------------------------ [2011-02-01 15:58:55] acid at rizzt dot kicks-ass dot org Description: ------------ I experienced odd things testing code that was working with 5.2.19. It look like reading a file with file_get_contents using a streamwrapper class destroys some part of the zend engine. After reading the file all sorts of odd problems occur. I tracked it down to undefined variables returned by stream_stat() in my stream wrapper class. Casting the values to an integer fixes it. Test script: --------------- class StreamWrapper { public function stream_stat() { return array( 'atime' => $this->notset, 'mtime' => $this->notset, 'ctime' => $this->notset, ); } } ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=53903&edit=1