2014-07-25 84 views
2

有權限PHP複製不復制我有一些PHP代碼,需要一個zip文件,將其提取到../images/galleries/foldername/zipfilename,現在我正在嘗試將提取的文件一個級別到文件夾名的文件夾,我改變兩個文件夾的權限,並且提取每個文件和文件仍然不會複製:(即使在777

我越來越沒有錯誤可言,甚至有錯誤的開啓。

$zip = new ZipArchive(); 
if ($zip->open($path) === true) { 
    for($i = 0; $i < $zip->numFiles; $i++) { 
     $zip->extractTo('../images/galleries/' . $galleryName, array($zip->getNameIndex($i))); 
    } 
    $zip->close(); 
    chmod('../images/galleries/' . $galleryName . '/' . $name[0], 0777); 
    chmod('../images/galleries/' . $galleryName, 0777); 
    foreach(glob('../images/galleries/' . $galleryName . '/' . $name[0] . '/*') as $image){ 
     chmod($image, 0777); 
     copy($image, '../images/galleries/' . $galleryName . '/'); 
    } 
} 

什麼是錯誤的?截至目前,zip被上傳,文件被解壓縮到文件夾名稱中,另一個文件夾被創建在文件夾中,我真的需要在文件夾名稱中獲取這些項目。

我通過error_reporting(E_ALL);

打開我的PHP錯誤和權限被更改爲0777

,或者如果有人知道一個更好的方式來使用extractTo更好,所以圖像是文件夾名,而不是zipfilename

+4

作爲一般規則,您不能向自己授予您缺少的權限。這就像能夠獲得任何鎖的鑰匙一樣。 –

+0

順便說一句,你是如何驗證錯誤被打開的?您設定了哪些PHP指令,您如何知道變更已經生效? –

+0

文件夾和文件的權限正在更改爲0777 – user3723240

回答

4

此行似乎是錯誤的

copy($image, '../images/galleries/' . $galleryName . '/'); 

copy()需要的文件名目的地,請參閱first comment on the related PHP doc

爲了讓你可以做類似

$filename = end(explode('/', $image)); 

的文件名或者你可以生成一個新的使用,您也可以使用上述兩種方法獲得相同的擴展。

此外,如果您只需要移動圖像並且不需要保留兩個副本,則可以按照文檔中的說明改用rename()