2014-07-25 57 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()