Edit report at https://bugs.php.net/bug.php?id=63473&edit=1
ID: 63473
Comment by: anon at anon dot anon
Reported by: anon at anon dot anon
Summary: rename rename
Status: Open
Type: Bug
Package: Filesystem function related
PHP Version: 5.4.8
Block user comment: N
Private report: N
New Comment:
Apparently PHP doesn't even have a way to merely rename a file. Using
file_exists with rename will be vulnerable to race conditions (potential file
overwrites) with other processes.
Previous Comments:
------------------------------------------------------------------------
[2012-11-09 18:32:42] anon at anon dot anon
Description:
------------
The rename function overwrites. This is totally unexpected and unintuitive
behavior which could cause data loss, and it is not even documented.
Combined with the fact that the rename function can "rename" across drives,
it's obviously a move, not a rename. Then it should be called move, so you can
tell what it does.
Test script:
---------------
<?php
file_put_contents('1.txt', 'one');
file_put_contents('2.txt', 'two');
rename('2.txt', '1.txt');
echo '1.txt:' . file_get_contents('1.txt');
echo '2.txt:' . file_get_contents('2.txt');
Expected result:
----------------
1.txt:one
2.txt:two
plus an error that the name exists
Actual result:
--------------
1.txt:two
2.txt:
plus an error that 2.txt does not exist
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=63473&edit=1