PHP Linux: How to copy a file to multiple directories?

PHP Linux


Hello,

How do I copy a file to multiple directories (either through command line or through a PHP script)?

For example...

I want to copy a specific file, index.php in /universal/

to these directories

/storage/A
/storage/B
/storage/C
/storage/D

How do I achieve that?
gingeraAsked:
Who is Participating?
 
afzzConnect With a Mentor Commented:
Try this
$src="/universal";
$filename="index.php";
$dest=array("/storage/A","/storage/B","/storage/C","/storage/D");
 
foreach($dest as $destdir){
if(file_exists($src."/".$filename)){
if(!file_exists($destdir."/".$filename)){
copy($src."/".$filename,$destdir."/".$filename);
}
else{
echo "File ".$filename." Exists at ".$destdir;
}
}
else{
echo "Source file does not exist";
}
}

Open in new window

0
 
XorlevCommented:
If you're looking for a single command, there isn't one as far as I know, but you can just use four copy commands.

I hope this is what you're looking for.

Command line:
cp /universal/index.php /storage/A
cp /universal/index.php /storage/B
cp /universal/index.php /storage/C
cp /universal/index.php /storage/D
 
Or PHP:
copy('/universal/index.php', '/storage/A');
copy('/universal/index.php', '/storage/B');
copy('/universal/index.php', '/storage/C');
copy('/universal/index.php', '/storage/D');

Open in new window

0
 
gingeraAuthor Commented:
Hi afzz, your suggested solution sounds feasible.

The file has to be copied to hundreds of directories. Could I use a MySQL database to feed this line:

$dest=array("/storage/A","/storage/B","/storage/C","/storage/D");

If so, how? (I am a newbie). Thanks.
0
Cloud Class® Course: Microsoft Azure 2017

Azure has a changed a lot since it was originally introduce by adding new services and features. Do you know everything you need to about Azure? This course will teach you about the Azure App Service, monitoring and application insights, DevOps, and Team Services.

 
XorlevConnect With a Mentor Commented:

<?php
$conn = mysql_connect('host', 'user', 'pass') or die('Failed to connect.');
mysql_select_db('dbname') or die('Failed to connect');
 
$query = mysql_query('SELECT directories FROM dirlist;');
 
while($result = mysql_fetch_assoc($query)) {
     $dest[] = $result['destination'];
}
 
// Other code
?>

Open in new window

0
 
XorlevConnect With a Mentor Commented:
SELECT directories FROM dirlist;

to

SELECT destination FROM dirlist;

Or whatever you need it to be. $result['columnname'] just needs to match it.
0
 
gingeraAuthor Commented:
Thanks afzz and Xorlev! Your combined suggestion worked OK to copy 1 file.

What if I want to copy multiple files at the same time? Can I use an array for $filelist as well? If so, how do I change afzz's code to accommodate the array?

e.g.
$filelist = array("index1.php","index2.php","index3.php","index4.php","index5.php","index6.php");
0
 
gingeraAuthor Commented:
THANKS!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.