首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果不存在PHP创建文件夹

如果不存在PHP创建文件夹
EN

Stack Overflow用户
提问于 2013-10-26 17:14:30
回答 4查看 17.1K关注 0票数 4

我正在创建一个中等大小的应用程序。

这个应用程序由许多产品组成。

现在这些产品有很多图像(一个产品可以有5-6个图像)。

为了尝试进行某种排序,我想为每个产品创建一个文件夹,该文件夹包含绑定到产品的所有图像。

到目前为止,我已经尝试了以下几点:

代码语言:javascript
复制
move_uploaded_file($file, APP.'product_images/'.$product_id.'/'.$image['name']);

然而,当我尝试这样做时,我会得到以下错误:

代码语言:javascript
复制
Warning (2): move_uploaded_file(/var/www/udlejnings-priser/cake/app/product_images/22/afterClick.png): failed to open stream: No such file or directory [APP/Controller/ImagesController.php, line 56]

Warning (2): move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/php472ci6' to '/var/www/udlejnings-priser/cake/app/product_images/22/afterClick.png' [APP/Controller/ImagesController.php, line 56]

现在,我不是一个完整的菜鸟,并且知道这意味着我失去了对文件夹的权限。

但是,问题是,如果文件夹不存在(即,这是该产品的图像第一次上传),那么应该创建一个新文件夹。

我的问题是两个分歧。

  1. 如果不存在,这会自动创建新文件夹吗?
  2. 如何对新创建的文件夹授予权限以避免此问题?
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-26 17:29:27

我知道这意味着我缺少对文件夹的权限。

实际上不。错误消息如下:

未能打开流:没有这样的文件或目录

它不引用权限,问题是:您要写入的包含文件夹不存在。

如果不存在,这会自动创建新文件夹吗?

不是的。

如何对新创建的文件夹授予权限?

没有必要这样做--创建的任何内容都将具有允许webserver用户读取文件的正确权限。但是,首先有必要尝试创建一个文件夹,但问题并不是这样。

使用CakePHP,文件夹类可以用于执行以下操作:

代码语言:javascript
复制
App::uses('Folder', 'Utility');
$dir = new Folder('/path/to/folder', 2);

第二个参数使用如果新文件夹不存在,则创建新文件夹。在这个问题的上下文中,这意味着代码应该如下所示:

代码语言:javascript
复制
function whatever() {

    if ($this->request->data) {
        ...
        
        $unused = new Folder(APP.'product_images/'.$product_id, true);
        if (move_uploaded_file($file, APP.'product_images/'.$product_id.'/'.$image['name'])) {
            ...
        } else {
            ...
        }
    }
}

文件夹APP/product_images应该已经存在,并且必须具有权限,以便webserver用户(例如apache)可以对其进行写入,否则就无法创建子文件夹/上载文件。假设APP/product_images存在并且are服务器用户有写它的权限,那么就没有必要修改上传文件的权限了--用户创建的文件在默认情况下是该用户可读的。

票数 5
EN

Stack Overflow用户

发布于 2013-10-26 17:17:12

试试这个:

代码语言:javascript
复制
if (!file_exists('path/to/directory')) {
    mkdir('path/to/directory', 0777, true);
}

( 1)如果这个文件夹还不存在,它会自动创建它吗?=> file_existsmkdir

2)如何对新创建的文件夹授予权限,以避免出现=> 0777问题

票数 5
EN

Stack Overflow用户

发布于 2013-10-26 17:18:06

  1. 不,它不会动态创建文件夹。
  2. 使用chmod()更改权限。

为了检查某个文件夹的存在,您也可以使用is_dir()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19609544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档