#23747 [Fbk->Opn]: GD-PNG fatal error

From: Date: Fri, 23 May 2003 11:50:01 +0000
Subject: #23747 [Fbk->Opn]: GD-PNG fatal error
References: 1  Groups: php.doc 
Request: Send a blank email to phpdoc+get-969353799@lists.php.net to get a copy of this message
ID: 23747 Updated by: wez@php.net Reported By: rryda at mgedata dot cz -Status: Feedback +Status: Open -Bug Type: GD related +Bug Type: Documentation problem Operating System: Windows 2000 PHP Version: 4.3.2RC4 New Comment: Not really a bug; fread() will now (correctly!) return data in packet sized chunks when reading from network streams, as it did in PHP 4.2.x and earlier. Technically, your script is broken; you should either do this: <?php $data = ""; $fp = fopen("http://...."); do { $chunk = fread($fp, 8192); if (strlen($chunk) == 0) { break; } $data .= $chunk; } while (true); fclose($fp); ?> this: <?php $data = file_get_contents("http://..."); ?> or this: <?php copy("http://...", tempnam("", "gd")); ?> I'm making this a documentation problem, because the fread() manual page has never mentioned this fact, despite it being the behaviour since forever. One final note; the file_get_contents() and copy() functions were themselves suffering from a similar problem to that of your script; I've committed a fix to CVS, so you need to either use the fread() loop approach, or get the next stable snapshot (due in an hour or so). Previous Comments: ------------------------------------------------------------------------ [2003-05-22 08:13:07] derick@php.net It just looks like your image is broken, can you put up a runnable script + image in a tarball (or send it to me by mail) to verify? Derick ------------------------------------------------------------------------ [2003-05-22 06:15:23] rryda at mgedata dot cz More info: - PHP is run as CGI - using original windows binary pack - php_gd2.dll from original windows binary pack - web server: Apache 2.0.45 Imagecreatefrompng() is used in following code: //$image_file_url ... URL to the source 24-bit PNG file $image_base = ImageCreateTrueColor($map_width, $map_height); $white = ImageColorExact($image_base, 255, 255, 255); ImageFill($image_base, 0, 0, $white); // ........ $input = fopen($image_file_url, "rb"); $image_data = fread($input, 2000000); fclose($input); $image_file = tempnam("", "gd".rand(0, 10000)); $output = fopen($image_file, "w+b"); fwrite($output, $image_data); fclose($output); $image_tmp = ImageCreateFromPNG($image_file); // ERROR // ........ ------------------------------------------------------------------------ [2003-05-22 05:56:11] derick@php.net Not enough information was provided for us to be able to handle this bug. Please re-read the instructions at http://bugs.php.net/how-to-report.php If you can provide more information, feel free to add it to this bug and change the status back to "Open". Thank you for your interest in PHP. ------------------------------------------------------------------------ [2003-05-22 02:33:22] rryda at mgedata dot cz Fatal error: imagecreatefrompng(): gd-png: fatal libpng error: IDAT: CRC error in ..... The error appears only if PHP is run as CGI (php.exe). This functionality was used in 4.3.2RC3 successfully. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=23747&edit=1

« previous php.doc (#969353799) next »