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