Copying files is a very common task in PHP, especially when you need to create backups, duplicate uploaded files, move templates, or generate multiple versions of the same file. PHP provides a simple and powerful function to handle file copying: copy().
This guide covers how copying works, error handling, permissions, best practices, and real-world use cases.
⭐ What Is File Copying in PHP?
Copying a file means creating a duplicate of an existing file at a new location with the same or different name.
PHP makes this very easy with:
copy("source.txt", "destination.txt");
⭐ Basic Syntax of copy()
copy(source, destination);
- source → the existing file
- destination → new file path or file name
The function returns:
true→ if file copied successfullyfalse→ if copying fails
⭐ Simple Example: Copy a File
<?php
if (copy("data.txt", "backup_data.txt")) {
echo "File copied successfully!";
} else {
echo "Failed to copy file.";
}
?>
This creates a duplicate named backup_data.txt.
⭐ Copying a File to Another Directory
copy("images/photo.jpg", "backup/photo_backup.jpg");
Make sure the destination folder exists and has write permissions.
⭐ Copy and Rename at the Same Time
copy("resume.pdf", "resume_old_version.pdf");
Useful for version control.
⭐ Copying Files Uploaded by Users
copy($_FILES['file']['tmp_name'], "uploads/" . $_FILES['file']['name']);
Used in:
- Upload systems
- Document management
- Media libraries
⭐ Checking Before Copying
Always check if the source file exists:
if (file_exists("info.txt")) {
copy("info.txt", "info_copy.txt");
} else {
echo "Source file not found.";
}
⭐ Handling Errors Properly
if (!copy("report.txt", "backup/report_backup.txt")) {
echo "Error: Could not copy report.txt!";
} else {
echo "Backup created!";
}
⭐ Copying With Permission Checking
Some systems require permissions:
if (!is_writable("backup")) {
echo "Backup folder is not writable.";
} else {
copy("file.txt", "backup/file.txt");
}
⭐ Real-World Use Cases of Copying Files in PHP
✔ Creating automatic backups
✔ Duplicating templates
✔ Versioning documents
✔ Storing uploaded files safely
✔ Creating image thumbnails (copy then resize)
✔ Copying system logs before clearing them
✔ Copying configuration files
⭐ Copying Multiple Files (Loop Example)
$files = ["a.txt", "b.txt", "c.txt"];
foreach ($files as $file) {
copy($file, "backup/" . $file);
}
⭐ Best Practices
✔ Check if the source file exists
✔ Check destination folder permissions
✔ Never copy extremely large files without size checks
✔ Use meaningful filenames for backups
✔ Avoid overwriting without warning
✔ Use is_writable() and file_exists() to avoid errors
⭐ Alternatives to copy()
PHP offers other file movement functions:
| Function | Purpose |
|---|---|
rename() | Moves or renames a file |
file_put_contents() | Replace/create files |
stream_copy_to_stream() | Copy file streams |
Citations
🔗 View other articles about PHP:
http://savanka.com/category/learn/php/
🔗 External PHP Documentation:
https://www.php.net/manual/en/function.copy.php