PHP: Nasıl bir üst dizin değişken bir dizin yeniden adlandırmak mı?

2 Cevap php

i yüklenenler / emeklilik / # SOME_VARIABLE_NUMBER # / # # SOME_CONSTANT_NUMBER / içindeki dosyaları taşımak istiyorum

İşte benim kod:

// move pension statements
// located at uploads/pension/%COMPANY_ID%/%USER_ID%/%HASH%
// so just move the %USER_ID% folder to the new company
$oldPensionDir = "uploads/pension/" . $demo_user[Users::companyID]  . "/" . $demo_user[Users::userID] . "/";
$newPensionDir = "uploads/pension/" . $newCompanyID      . "/" . $demo_user[Users::userID] . "/";
// see if the user had any files, and if so, move them
if(file_exists($oldPensionDir)) {
 // if it doesnt exist, make it
 if(!file_exists($newPensionDir))
  mkdir($newPensionDir);
 // move the folder
 rename($oldPensionDir, $newPensionDir);
}

i "mkdir" fonksiyonu ile dizin yapmak gerektiğinde ... Ancak, i olsun:

mkdir() [<a href='function.mkdir'>function.mkdir</a>]: No such file or directory

Tamam, belki mkdir çalışmaz, ama ne yeniden adlandırma hakkında? o hayır ... yok eğer belki de bu dizini yapacak!

rename(uploads/pension/1001/783/,uploads/pension/1000/783/) [<a href='function.rename'>function.rename</a>]: The system cannot find the path specified. (code: 3)

böylece, iki hata vardır. Ben adlandırma eserler eğer, ben bile mkdir ihtiyacınız olmayacak eminim, ama kim bilir ... bu hataları neden kimse bana söyleyebilir ve bunları düzeltmek için nasıl?

teşekkürler!

EDIT: Ben kodu modifiye ettik ve şimdi benim tek sorun bir erişim sorunu olduğunu ...

rename(uploads/pension/1000_783/,uploads/pension/1001/783/) [<a href='function.rename'>function.rename</a>]: Access is denied. (code: 5)

Aşağıdaki yeni kodudur. temelde, klasörler arasında hareket etmek zorundadır, çünkü ben (o üç kez yeniden adlandırmak, ancak son hareket hatası 'erişim engellendi' neden budur. garip bölüm i yeni dir silmek ve hatta ne zaman yeni bir yapar, i perma için ayarlayın 0777! nedir bu yanlış?

// move pension and total reward statements
// located at uploads/pension|total_rewards/%COMPANY_ID%/%USER_ID%/%HASH%
// so just move the %USER_ID% folder to the new company
$oldPensionDir = "uploads/pension/" . $demo_user[Users::companyID]   . "/" . $demo_user[Users::userID] . "/";
$tempPensionDir1 = "uploads/pension/" . $demo_user[Users::companyID]     . "/" . $demo_user[Users::companyID] . "_" . $demo_user[Users::userID] . "/";
$tempPensionDir2 = "uploads/pension/" . $demo_user[Users::companyID]     . "_" . $demo_user[Users::userID] . "/";
$newPensionDir = "uploads/pension/" . $newCompanyID                  . "/" . $demo_user[Users::userID] . "/";
// see if the user had any files, and if so, move them
if(file_exists($oldPensionDir)) {
    // if it doesnt exist, make it
    if(!file_exists($newPensionDir))
        mkdir($newPensionDir, 0777, true);
    // move the folder
    // first, move it to the pension directory
    rename($oldPensionDir, $tempPensionDir1);
    rename($tempPensionDir1, $tempPensionDir2);
    // second, move it into the new directory
    rename($tempPensionDir2, $newPensionDir);
}

2 Cevap

mkdir kaldırmak ve sadece yeniden adlandırın:

rename($oldPensionDir, $newPensionDir);

her zaman dizine aşağı şerit nereye çocuklarını yeniden adlandırmak ve istemiyorsanız:

uploads/pension/1001

karşı

uploads/pension/1000

mkdir () Eğer yolu için gerekli herhangi bir üst dizinleri oluşturmak için kullanabileceğiniz bir recursive parametresi vardır