copy

(PHP 4, PHP 5)

copyCopies file

Description

bool copy ( string $source , string $dest [, resource $context ] )

Makes a copy of the file source to dest.

If you wish to move a file, use the rename() function.

Parameters

source

Path to the source file.

dest

The destination path. If dest is a URL, the copy operation may fail if the wrapper does not support overwriting of existing files.

Warning

If the destination file already exists, it will be overwritten.

context

A valid context resource created with stream_context_create().

Return Values

Returns TRUE on success or FALSE on failure.

Changelog

Version Description
5.3.0 Added context support.
4.3.0 Both source and dest may now be URLs if the "fopen wrappers" have been enabled. See fopen() for more details.

Examples

Example #1 copy() example

<?php
$file 
'example.txt';
$newfile 'example.txt.bak';

if (!
copy($file$newfile)) {
    echo 
"failed to copy $file...\n";
}
?>

See Also

Коментарии

Having spent hours tacking down a copy() error: Permission denied , (and duly worrying about chmod on winXP) , its worth pointing out that the 'destination' needs to contain the actual file name ! --- NOT just the path to the folder you wish to copy into.......
DOH !
hope this saves somebody hours of fruitless debugging
2004-09-03 04:54:02
http://php5.kiev.ua/manual/ru/function.copy.html
It take me a long time to find out what the problem is when i've got an error on copy(). It DOESN'T create any directories. It only copies to existing path. So create directories before. Hope i'll help,
2006-03-09 18:32:59
http://php5.kiev.ua/manual/ru/function.copy.html
Автор:
It's worth noting that copy() sets the destination file's last modified time/date.
2008-06-18 11:30:29
http://php5.kiev.ua/manual/ru/function.copy.html
Автор:
Don't forget; you can use copy on remote files, rather than doing messy fopen stuff.  e.g.

<?php
if(!@copy('http://someserver.com/somefile.zip','./somefile.zip'))
{
   
$errorserror_get_last();
    echo 
"COPY ERROR: ".$errors['type'];
    echo 
"<br />\n".$errors['message'];
} else {
    echo 
"File copied from remote!";
}
?>
2008-06-20 05:44:13
http://php5.kiev.ua/manual/ru/function.copy.html
Here's a simple recursive function to copy entire directories

Note to do your own check to make sure the directory exists that you first call it on.

<?php
function recurse_copy($src,$dst) {
   
$dir opendir($src);
    @
mkdir($dst);
    while(
false !== ( $file readdir($dir)) ) {
        if (( 
$file != '.' ) && ( $file != '..' )) {
            if ( 
is_dir($src '/' $file) ) {
               
recurse_copy($src '/' $file,$dst '/' $file);
            }
            else { 
               
copy($src '/' $file,$dst '/' $file);
            }
        }
    }
   
closedir($dir);
}
?>
2009-05-20 19:04:46
http://php5.kiev.ua/manual/ru/function.copy.html
some hosts disable copy() function and say its for security 

and for some copy is important so this is and simple function that do same as copy function effect 

how smart php can help us l like php 

<?php
   
function copyemz($file1,$file2){
         
$contentx =@file_get_contents($file1);
                   
$openedfile fopen($file2"w");
                   
fwrite($openedfile$contentx);
                   
fclose($openedfile);
                    if (
$contentx === FALSE) {
                   
$status=false;
                    }else 
$status=true;
                   
                    return 
$status;
    }
?>
2009-08-30 08:48:48
http://php5.kiev.ua/manual/ru/function.copy.html
Here is a simple script that I use for removing and copying non-empty directories. Very useful when you are not sure what is the type of a file.

I am using these for managing folders and zip archives for my website plugins.

<?php

// removes files and non-empty directories
function rrmdir($dir) {
  if (
is_dir($dir)) {
   
$files scandir($dir);
    foreach (
$files as $file)
    if (
$file != "." && $file != ".."rrmdir("$dir/$file");
   
rmdir($dir);
  }
  else if (
file_exists($dir)) unlink($dir);


// copies files and non-empty directories
function rcopy($src$dst) {
  if (
file_exists($dst)) rrmdir($dst);
  if (
is_dir($src)) {
   
mkdir($dst);
   
$files scandir($src);
    foreach (
$files as $file)
    if (
$file != "." && $file != ".."rcopy("$src/$file""$dst/$file"); 
  }
  else if (
file_exists($src)) copy($src$dst);
}
?>

Cheers!
2011-05-17 14:13:43
http://php5.kiev.ua/manual/ru/function.copy.html
A nice simple trick if you need to make sure the folder exists first:

<?php

$srcfile
='C:\File\Whatever\Path\Joe.txt';
$dstfile='G:\Shared\Reports\Joe.txt';
mkdir(dirname($dstfile), 0777true);
copy($srcfile$dstfile);

?>

That simple.
2013-04-03 03:51:59
http://php5.kiev.ua/manual/ru/function.copy.html
If you try to copy a file to itself - e.g. if the target directory is just a symlink to the source directory - copy will return false. just like on the command line.
2015-06-26 17:43:49
http://php5.kiev.ua/manual/ru/function.copy.html
Автор:
Copying large files under Windows 8.1, from one NTFS filesystem to another NTFS filesystem, results in only the first 4 GiB copied and the rest of the file is ignored.

So, if you think to have files larger than 4 GiB, instead of doing:
   copy($source,$destination);
it is much better to do something like:
   exec("xcopy $source $destination");

I will check to see if this issue is valid also under Linux.
It depends on PHP not being compiled in 64 bit mode?
2015-12-27 01:03:26
http://php5.kiev.ua/manual/ru/function.copy.html
On Windows, php-7.4.19-Win32-vc15-x64 - copy() corrupted a 6GB zip file. Our only recourse was to write:

function file_win_copy( $src, $dst ) {
 shell_exec( 'COPY "'.$src.'" "'.$dst.'"');
 return file_exists($dest);
}
2021-09-30 21:44:20
http://php5.kiev.ua/manual/ru/function.copy.html

    Поддержать сайт на родительском проекте КГБ