>哪个用户/组应该拥有蛋糕文件?
>如果不同,哪个用户/组应该拥有app / tmp文件夹? (和子文件夹)
>使用正确的用户/组,生成文件夹和文件的正确权限是什么? (如果设置正确也适用于开发)
>完成上传文件的存储以及需要为该文件夹设置的所有权/权限.应该在哪里相对于app /?
我知道777修复了错误,但我想正确设置它.
我听说如果一切正确设置,660应该足以生产.
谁需要具有读取权限,谁需要具有写入权限,是否有人需要执行?
1)CakePHP所有权
CakePHP文件应由您(机器的用户)拥有(无论您何时登录).没有root作为所有者!
OSX:/ Users / johnsmith的johnsmith部分
Linux:/ home / johnsmith的johnsmith部分
2)app / tmp所有权.
根据CakePHP documentation:
…make sure the directory app/tmp and all its subdirectories in your
cake installation are writable by the web server user.
选项1:
用户所有者需要是apache的用户.组所有者可以是您所属的组,因此您还可以通过finder / CLI访问此文件夹.没有root作为所有者!
OSX:最近在OSX上预装了Apache,而apache的默认用户是_www.但是,如果您不确定是否可以通过键入终端ps aux |找到它apache运行时grep httpd.最后一行是您刚输入的命令,因此请在上面查看.
现在您已了解您的apache用户,您必须将其分配给app / tmp /.您可以使用以下命令执行此操作:sudo chown -R _www app / tmp /
Linux:linux上的默认用户通常是带有www-data组的www-data.如果您不确定,请使用ps aux | grep httpd找出用户和sudo chown -R _www app / tmp /将所有权分配给该文件夹的apache.
选项2:
您可以将自己保留为用户所有者,但将组所有者设置为apache所属的组.默认情况下,apache拥有自己的组,但您可以创建一个新组并为其添加apache.
OSX:默认情况下OSX上的apache组与用户相同:_www.然后,您必须运行以下命令来获取所有权:sudo chown -R:_www app / tmp /.现在,如果您使用ls -l检查权限,您应该看到您的用户名(johnsmith)和新的组所有者 – _www.
Linux:*默认情况下,apache组是www-data,因此使用相同的命令来更改所有权:sudo chown -R:www-data app / tmp /.
注意:Debian / Ubuntu使用www-data,而CentOS使用apache.
3)权限
对于要运行的站点,apache需要读取和写入而不执行.为了您访问它(假设您在拥有app / tmp的组中),如果您将使用终端/查找器手动编辑内容,您还需要读写.所有其他用户都没有任何权利.所以:
OSX和Linux:sudo chmod -R 660 app / tmp /. -R部分是为所有内部文件夹递归执行的.前6个用户所有者(OSX:_www或Linux:www-data),第二个6用于组所有者(OSX:staff或Linux:johnsmith),0用于所有其他用户/来宾.
注意:根据07.01对于CakePHP,看起来CakePHP 2.4将能够在app / tmp /中创建子文件夹,这意味着它将需要7而不是6,现在用户变为760.
如果要上传文件,则需要为img / uploads文件夹或上传的任何位置设置类似的设置.所有权将相同,但权限需要具有重命名和文件夹创建的执行权限.所以之前的660现在应该是760.另外,理想情况下,上传不在webroot /目录中,需要绝对路径.