[I] know that this means that i am missing permission to the folder.
实际上没有=).错误消息显示:
failed to open stream: No such file or directory
这没有引用problrm的权限:您尝试写入的包含文件夹不存在.
这是否会自动创建一个新文件夹(如果它尚不存在)?
没有.
如何授予新创建的文件夹权限?
没有必要这样做 – 创建的任何内容都具有允许webserver用户读取文件的正确权限.但是首先需要尝试创建一个文件夹,但问题并非如此.
使用CakePHP,Folder class可以用来做到这一点:
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并且webserver用户具有写入它的权限,则无需修改上载文件的权限 – 用户创建的文件默认情况下可由该用户读取.