Hi,

I have noticed that fread()'s behavior has changed between PHP 5.0.4 and PHP 5.1.0b3. Basically, http://pear.chiaraquartet.net/go-pear.phar works in PHP 5.0.4 and fails in 5.1.0b3 because of this change. The line in question of the .phar from PHP_Archive is:

fread($this->_file, $this->internalFileLength + $this->footerLength);

Basically, a .phar is a .tar. For files inside the .phar larger than 16000 bytes, the fread above fails with the incorrect error message:

PHP Warning: fread(): Length parameter must be greater than 0 in c:\php5\pear\PHP\Archive.php on line 193

Note that the failure is OS-independent.

However, the actual length parameter is 21,155, which is not less than zero, unless you consider it to be a negative number in binary. After the fread in PHP 5.0.4, ftell() reveals that the pointer has advanced to 22016, whereas in 5.1.0b3, it has only advanced to 16384.

According to the notes in http://bugs.php.net/bug.php?id=30936 this should work with a local file, so should I re-open 30936, or is this a new bug?

Greg

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to