PHP kullanarak bir dosyayı bir dizinden diğerine nasıl kopyalayabilirim?


158

De ki ben bir dosyayı var test.phpiçinde foosıra sıra dizinde bar. Nasıl yerine bar/test.phpbirlikte foo/test.phpkullanarak PHP? Windows XP'deyim, çapraz platform çözümü harika olurdu, ancak pencereler tercih edildi.

Yanıtlar:


285

Bu copy()işlevi kullanabilirsiniz :

// Will copy foo/test.php to bar/test.php
// overwritting it if necessary
copy('foo/test.php', 'bar/test.php');


Kılavuz sayfasından ilgili birkaç cümleyi alıntılamak:

Hedef dosya kaynağının bir kopyasını yapar.

Hedef dosya zaten varsa, üzerine yazılır.


8
Henüz yoksa dizini copy( 'foo/test.php', 'bar/test.php' )oluşturur mu bar?
henrywright

1
@Henrywright yok, dizinler oluşturmaz. Manuel olarak yapmalısınız. php kılavuzu üzerinde kontrol edin
Haseeb Zulfiqar

25

Sen kullanabilirsiniz yeniden adlandırma () fonksiyonu:

rename('foo/test.php', 'bar/test.php');

Ancak bu , kopyalanmayacak dosyayı taşır


22
Acaba neden bu fonksiyon yeniden adlandırmak ve not hareket falan
themhz

@themis Keşke işlevi isimlendirmiş olsalardı move. Biraz linux maruziyeti varsa sezgisel olurdu.
Fr0zenFyr

4
@themis çünkü rename('foo/test1.php', 'foo/test2.php');;)
Anand Singh


8

Kopyalayabilir ve bunu geçmeniz size yardımcı olacaktır

<?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";
}
?>

7

PHP kullanarak tüm dosyaları bir klasörden diğerine kopyalamanın en iyi yolu

<?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
?>

1

Merhaba çocuklar da dinamik bir kopyalama ve yapıştırma kullanarak kopyalamayı nasıl eklemek istediler.

kullanıcının oluşturacağı gerçek klasörü bilmediğimizi, ancak silme, güncelleme, görünümler gibi bazı işlevleri etkinleştirmek için kopyalanacak dosyalara ihtiyacımız olduğunu biliyoruz.

böyle bir şey kullanabilirsiniz ... Şu anda meşgul olduğum karmaşık projelerinden birinde bu kodu kullandım. Sadece kendim inşa ediyorum çünkü internette aldığım tüm cevaplar bana bir hata veriyordu.

    $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

Ben facebook veya twitter her yeni kullanıcı pano dinamik oluşturmak için böyle bir şey kullanır düşünüyorum ....


0

Hem rename () hem de copy () kullanabilirsiniz.

Kaynak dosyanın konumunda kalmasını artık istemiyorsam yeniden adlandırmayı kullanmayı tercih ediyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.