#48271 [Fbk->Opn]: fopen creates two files

From: Date: Thu, 14 May 2009 17:10:31 +0000
Subject: #48271 [Fbk->Opn]: fopen creates two files
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-137323@lists.php.net to get a copy of this message
ID: 48271 User updated by: my dot email dot subscriptions at gmail dot com Reported By: my dot email dot subscriptions at gmail dot com -Status: Feedback +Status: Open Bug Type: Filesystem function related Operating System: windows xp spIII, Apache 2.2.3 PHP Version: 5.2.9 New Comment: Following your lead: $fp = fopen('a1.txt', 'x'); if (!$fp) die("cannot open a1.txt\n"); fclose($fp); Expected result, 1 empty file. Resulted in two empty files, a1.txt, a2.txt ------------------------------------------ $fp = fopen('a1.gif', 'x'); if (!$fp) die("cannot open a1.gif\n"); fclose($fp); Expected result, 1 empty file. Resulted in two empty files, a1.gif, a2.gif ------------------------------------------ $fp = fopen('a1.pdf', 'w'); if (!$fp) die("cannot open a1.pdf\n"); fclose($fp); Expected result, 1 empty file. Resulted in two empty files, a1.pdf, a2.pdf ------------------------------------------ $fp = fopen('a1.txt', 'x'); if (!$fp) die("cannot open a1.txt\n"); $bytes = fwrite($fp, 'Some text'); if (!$bytes) die("cannot write to a1.txt\n"); fclose($fp); Expected result, 1 txt file. Resulted in two txt files, a1.txt, a2.txt both files have the same text. ------------------------------------------ $fp = fopen('a1.gif', 'x'); if (!$fp) die("cannot open a1.gif\n"); $bytes = fwrite($fp, gifimage); if (!$bytes) die("cannot write to a1.gif\n"); fclose($fp); Expected result, 1 image file. Resulted in two different images, a1.gif, a2.gif. The image in a2.gif is the expected image and a1.gif is another different image. ------------------------------------------ $fp = fopen('a1.pdf', 'w'); if (!$fp) die("cannot open a1.pdf\n"); $bytes = fwrite($fp, pdfcontent); if (!$bytes) die("cannot write to a1.pdf\n"); fclose($fp); Expected result, 1 pdf file. Resulted in two pdf files, a1.pdf, a2.pdf both files have the same pdf content. ------------------------------------------ ------------------------------------------ NOW PLEASE, BEAR WITH ME. $fp = fopen('a1.gif', 'x'); if (!$fp) die("cannot open a1.gif\n"); Expected result, 1 empty file. Resulted in two empty files, a1.gif, a2.gif As I already know that it will write two files, then I do this. $fp = fopen('a2.gif', 'w'); if (!$fp) die("cannot open a2.gif\n"); $bytes = fwrite($fp, gifimage); if (!$bytes) die("cannot write to a2.gif\n"); fclose($fp); Expected result, 1 image file in a2.gif. Resulted in two empty files, a1.gif, a3.gif and two different images in files a2.gif and a4.gif. The image in a4.gif is the expected image and a2.gif is another different image. I hope this time the code is "usable" and the problem is clear. Previous Comments: ------------------------------------------------------------------------ [2009-05-14 08:04:19] pajoye@php.net Your code is not usable, please provide a self contained script, something like: $fp = fopen('a.txt'); if (!$fp) die("cannot open a.txt\n"); $bytes = fwrite($fp, 'abc'); if (!$bytes) die("cannot write to a.txt\n"); fclose($fp); ------------------------------------------------------------------------ [2009-05-14 02:37:34] my dot email dot subscriptions at gmail dot com Description: ------------ Using this code I get two files written in my user directory. $thisFilePointer = fopen( $tempFileName, 'x' ); die; The first one is the file I named as "thisFile1.png", the second is the same name plus 1, that is 'someFile2.png', both files are empty. If I write an image, the first and second files contains two different images, one is the image I want the other is alike but not the same content. If the file is a pdf file, I get two files also but the same content in both of them. Reproduce code: --------------- $thisFile = $pdfFileName . $fileType; $tempFileName = tempFilesDir . $thisFile; $thisFilePointer = fopen( $tempFileName, 'x' ); if ( !$thisFilePointer ) { # Here we prepare the error output into 'userErr'; trigger_error( userErr, E_USER_ERROR ); } //if $fileHandler = fwrite( $thisFilePointer, $pdfContent ); if ( !$fileHandler ) { # Here we prepare the error output into 'userErr'; trigger_error( userErr, E_USER_ERROR ); } //if fclose( $thisFilePointer ); Expected result: ---------------- Get only one file with the desired content. This did not happened to me under php 4 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=48271&edit=1

« previous php.bugs (#137323) next »