Reputation: 267317
Say I've got a file test.php
in foo
directory as well as bar
. How can I replace bar/test.php
with foo/test.php
using PHP
? I'm on Windows XP, a cross platform solution would be great but windows preferred.
Upvotes: 181
Views: 377415
Reputation: 319
You can copy and paste this:
<?php
$file = '/test1/example.txt';
$newfile = '/test2/example.txt';
if(!copy($file,$newfile)){
echo "failed to copy $file";
}
else{
echo "copied $file into $newfile\n";
}
?>
Upvotes: 11
Reputation: 397
<?php
$file = 'example.txt';
$newfile = 'example2.txt';
if (!copy($file, $newfile)) {
echo "failed to copy $file...\n";
}
?>
Upvotes: 1
Reputation: 94
PHP's copy()
function actually works only if the destination has some file to override. For example, you are copying a file A to file B, the copy()
function will work something like following;
$fileA = "foo/fileA.txt";
$fileB = "bar/fileA.txt";
copy($fileA, $fileB);
So the copy()
requires to have a file at the destination path and in fact destination path should include that file name too otherwise it will through error and will not work.
But if you do not have any file at the destination to override well than simply make a file with that name first and you will write something like this;
$source = "foo/fileA.txt";
$destination = "bar/"; // note how the destination has no file.
$newFile = "somefile.txt";
touch($destination . $newFile);
// then do the copy part
copy($source, $destination.$newFile);
I had the same problem and came to this solution of making a file at the destination for the copy function to override.
Upvotes: 2
Reputation: 4203
<?php
// Copy the file from /user/desktop/geek.txt
// to user/Downloads/geeksforgeeks.txt'
// directory
// Store the path of source file
$source = '/user/Desktop/geek.txt';
// Store the path of destination file
$destination = 'user/Downloads/geeksforgeeks.txt';
// Copy the file from /user/desktop/geek.txt
// to user/Downloads/geeksforgeeks.txt'
// directory
if( !copy($source, $destination) ) {
echo "File can't be copied! \n";
}
else {
echo "File has been copied! \n";
}
?>
Upvotes: 0
Reputation: 1203
Best way to copy all files from one folder to another using PHP
<?php
$src = "/home/www/example.com/source/folders/123456"; // source folder or file
$dest = "/home/www/example.com/test/123456"; // destination folder or file
shell_exec("cp -r $src $dest");
echo "<H2>Copy files completed!</H2>"; //output when done
?>
Upvotes: 7
Reputation: 17
Hi guys wanted to also add on how to copy using a dynamic copying and pasting.
let say we don't know the actual folder the user will create but we know in that folder we need files to be copied to, to activate some function like delete, update, views etc.
you can use something like this... I used this code in one of the complex project which I am currently busy on. i just build it myself because all answers i got on the internet was giving me an error.
$dirPath1 = "users/$uniqueID"; #creating main folder and where $uniqueID will be called by a database when a user login.
$result = mkdir($dirPath1, 0755);
$dirPath2 = "users/$uniqueID/profile"; #sub folder
$result = mkdir($dirPath2, 0755);
$dirPath3 = "users/$uniqueID/images"; #sub folder
$result = mkdir($dirPath3, 0755);
$dirPath4 = "users/$uniqueID/uploads";#sub folder
$result = mkdir($dirPath4, 0755);
@copy('blank/dashboard.php', 'users/'.$uniqueID.'/dashboard.php');#from blank folder to dynamic user created folder
@copy('blank/views.php', 'users/'.$uniqueID.'/views.php'); #from blank folder to dynamic user created folder
@copy('blank/upload.php', 'users/'.$uniqueID.'/upload.php'); #from blank folder to dynamic user created folder
@copy('blank/delete.php', 'users/'.$uniqueID.'/delete.php'); #from blank folder to dynamic user created folder
I think facebook or twitter uses something like this to build every new user dashboard dynamic....
Upvotes: 1
Reputation: 404
You can use both rename() and copy().
I tend to prefer to use rename if I no longer require the source file to stay in its location.
Upvotes: 0
Reputation: 747
You could use the rename() function :
rename('foo/test.php', 'bar/test.php');
This however will move the file not copy
Upvotes: 24
Reputation: 3588
copy will do this. Please check the php-manual. Simple Google search should answer your last two questions ;)
Upvotes: 14
Reputation: 401182
You could use the copy()
function :
// Will copy foo/test.php to bar/test.php
// overwritting it if necessary
copy('foo/test.php', 'bar/test.php');
Makes a copy of the file source to dest.
If the destination file already exists, it will be overwritten.
Upvotes: 336