我正在创建一个中等大小的应用程序。
此应用程序包含许多产品。
现在这些产品有很多图像(一个产品可以有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]
现在我还不是一个完整的菜鸟,并且知道这意味着我缺少该文件夹的权限。
但是,问题在于,如果该文件夹不存在(即这是第一次上传该产品的图像),则应创建一个新文件夹。
我的问题分为两部分。
[我]知道这意味着我缺少对该文件夹的许可。
实际上没有=)。错误消息显示为:
无法打开流:没有这样的文件或目录
这没有涉及到问题的权限:您要写入的包含文件夹不存在。
不。
不必这样做-创建的任何内容都将具有正确的权限,以允许Web服务器用户读取文件。但是,首先必须尝试创建一个文件夹,但问题并非如此。
使用CakePHP,Folder类可用于执行以下操作:
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
应该已经存在,并且必须具有权限,以便Web服务器用户(例如apache)可以对其进行写入,否则将无法创建子文件夹/上传文件。假设APP/product_images
存在并且Web服务器用户具有写入权限,则无需修改上传文件的权限-默认情况下,该用户可以读取该用户创建的文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句