php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #42111 copy() creates file for dir as src
Submitted: 2007-07-26 13:40 UTC Modified: 2007-08-15 08:18 UTC
From: mahesh dot vemula at in dot ibm dot com Assigned:
Status: Closed Package: Filesystem function related
PHP Version: 5CVS-2007-07-26 (CVS) OS: RHEL4
Private report: No CVE-ID: None
 [2007-07-26 13:40 UTC] mahesh dot vemula at in dot ibm dot com
Description:
------------
While trying to create a copy of an existing dir by copy() function, it creates a file which is not expected but returns FALSE as expected. Even for an existing file as second argument, PHP doesn?t throw any warning message. It happens against Linux, and works fine against Windows.

Reproduce code:
---------------
<?php
mkdir("copy");
mkdir("copy1");
fclose( fopen("copy.tmp", "w") );

var_dump( copy("copy", "copy1") );  //copying dir to existing dir, throws a Warning msg as expected
var_dump( copy("copy.tmp", "copy") );  //copying file to a dir, throws a warning msg as expected

var_dump( copy("copy", "copy_copy") );  //copying dir to non-existing dest, copy returns FALSE but creates a file & no warning msg
var_dump( copy("copy", "copy_dir.tmp") );  //copying dir to non-existing file, copy returns FALSE but creates a file & no warning msg
var_dump( copy("copy", "copy.tmp") );  //copying dir to an existing file, copy returns FALSE but no warning msg

unlink("copy_copy");
unlink("copy_dir.tmp");
unlink("copy.tmp");
rmdir("copy1");
rmdir("copy");
?>


Expected result:
----------------
Creation of file is not expected and a required warning messages are expected.

Actual result:
--------------
Warning: copy(copy1): failed to open stream: Is a directory in %s on line %d
bool(false)

Warning: copy(copy): failed to open stream: Is a directory in %s on line %d
bool(false)
bool(false)
bool(false)
bool(false)


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2007-08-10 13:08 UTC] jani@php.net
Isn't this about the same bug as bug #42243 ?? If so, I think this is fixed too since we now get an error and it returns before the file is created..?
 [2007-08-13 11:31 UTC] mahesh dot vemula at in dot ibm dot com
Fix for bug #42243 can't be a fix for bug #42111. But fix for bug #42111 would be a fix for #42243.

Bug #42111 needs to be fixed in the following two aspects.
1) copying dir to non-existing destination
 Here, copy() returns FALSE but creates a file & no warning msg. Hence the fix would be "to generate warning msg when the first arg is a dir even the second arg is a non-existing destination, as copy() function is not valid on dirs. And also the destination file should not be created.
2) copying dir to existing file
 This is fixed by the fix provided for bug #42243, which is specific when the first argument is a dir and the second one is an existing destination.

I am sorry to raise the redundant bug #42243, which led to confusion.
 [2007-08-14 11:27 UTC] mahesh dot vemula at in dot ibm dot com
Yes, its working fine. Thanks.
 [2007-08-15 08:18 UTC] jani@php.net
So we close this.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Apr 19 22:01:28 2024 UTC