Edit report at https://bugs.php.net/bug.php?id=65701&edit=1

 ID:                 65701
 Comment by:         flack at contentcontrol-berlin dot de
 Reported by:        flack at contentcontrol-berlin dot de
 Summary:            copy() doesn't work when destination filename is
                     created by tempnam()
 Status:             Open
 Type:               Bug
 Package:            *General Issues
 Operating System:   Ubuntu Linux
 PHP Version:        5.5.3
 Block user comment: N
 Private report:     N

 New Comment:

Argh, third time's the charm:

file_put_contents($dst, file_get_contents($src))

is working


Previous Comments:
------------------------------------------------------------------------
[2013-09-18 17:53:00] flack at contentcontrol-berlin dot de

Typo: Should read

file_put_contents($src, file_get_contents($dst))

for the version that works

------------------------------------------------------------------------
[2013-09-18 17:51:33] flack at contentcontrol-berlin dot de

Description:
------------
See the script below. The expected output is

int(4)

instead, I get 

int(0)

I tested on the Ubuntu packages for php 5.3.10, 5.4.4 and 5.5.3.

When I use 

file_put_contents($src, $dst)

instead of copy(), it works as expected. Also, when I use fopen() and 
stream_copy_to_stream(). Only the plain copy() function doesn't behave as 
expected. Everything is on the same hard disk and was tested on three different 
machines (Ubuntu 12.04, 13.04 and Debian 7).


Test script:
---------------
$src = '/tmp/file.txt';
touch ($src);
file_put_contents($src, 'test');
$dst = tempnam('/tmp', 'dst');
copy($src, $dst);
var_dump(filesize($dst));

Expected result:
----------------
int(4)

Actual result:
--------------
int(0)


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=65701&edit=1

Reply via email to