【问题标题】:PHP copy does not copy even with permissions at 777即使权限为 777,PHP 副本也不会复制
【发布时间】:2014-07-25 17:33:19
【问题描述】:

我有一些 php 代码需要一个 zip 文件,将其解压缩到 ../images/galleries/foldername/zipfilename 中,现在我正在尝试将提取的文件重新提取到文件夹名称文件夹中,我正在更改两个文件夹和每个文件的权限都被提取并且文件仍然不会复制:(

我没有收到任何错误,即使打开了错误。

$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 中

【问题讨论】:

  • 一般情况下,您不能授予自己缺少的权限。这就像能够获得任何锁的钥匙一样。
  • 顺便说一句,您如何验证错误已打开?您设置了哪些 PHP 指令,您如何知道更改是否有效?
  • 文件夹和文件的权限正在更改为0777
  • 那么您很可能可以访问这些文件和文件夹,并且不需要更改它们的文件系统位。
  • 除非您已经拥有该文件,否则chmod($image,0777) 无法工作。您需要目标文件夹的权限。您的服务器配置可能会拒绝访问,而不仅仅是文件系统权限。

标签: php


【解决方案1】:

这行好像错了

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

copy() 需要目的地的文件名,参考first comment on the related PHP doc

要获取文件名,您可以执行以下操作

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

或者您可以生成一个具有相同扩展名的新扩展名,您也可以使用上述两种方法获得该扩展名。

此外,如果您只想移动图像并且不需要保留两份副本,您可能需要查看rename(),如文档所述。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 2014-06-30
    • 1970-01-01
    • 2016-06-08
    • 2016-06-07
    • 2010-12-24
    • 1970-01-01
    相关资源
    最近更新 更多