我正在创建一个中等大小的应用程序。
这个应用程序由许多产品组成。
现在这些产品有很多图像(一个产品可以有5-6个图像)。
为了尝试进行某种排序,我想为每个产品创建一个文件夹,该文件夹包含绑定到产品的所有图像。
到目前为止,我已经尝试了以下几点:
move_uploaded_file($file, APP.'product_images/'.$product_id.'/'.$image['name']);然而,当我尝试这样做时,我会得到以下错误:
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]现在,我不是一个完整的菜鸟,并且知道这意味着我失去了对文件夹的权限。
但是,问题是,如果文件夹不存在(即,这是该产品的图像第一次上传),那么应该创建一个新文件夹。
我的问题是两个分歧。
发布于 2013-10-26 17:29:27
我知道这意味着我缺少对文件夹的权限。
实际上不。错误消息如下:
未能打开流:没有这样的文件或目录
它不引用权限,问题是:您要写入的包含文件夹不存在。
如果不存在,这会自动创建新文件夹吗?
不是的。
如何对新创建的文件夹授予权限?
没有必要这样做--创建的任何内容都将具有允许webserver用户读取文件的正确权限。但是,首先有必要尝试创建一个文件夹,但问题并不是这样。
使用CakePHP,文件夹类可以用于执行以下操作:
App::uses('Folder', 'Utility');
$dir = new Folder('/path/to/folder', 2);第二个参数使用如果新文件夹不存在,则创建新文件夹。在这个问题的上下文中,这意味着代码应该如下所示:
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服务器用户有写它的权限,那么就没有必要修改上传文件的权限了--用户创建的文件在默认情况下是该用户可读的。
发布于 2013-10-26 17:17:12
试试这个:
if (!file_exists('path/to/directory')) {
mkdir('path/to/directory', 0777, true);
}( 1)如果这个文件夹还不存在,它会自动创建它吗?=> file_exists和mkdir
2)如何对新创建的文件夹授予权限,以避免出现=> 0777问题
发布于 2013-10-26 17:18:06
chmod()更改权限。为了检查某个文件夹的存在,您也可以使用is_dir()。
https://stackoverflow.com/questions/19609544
复制相似问题