注意:我想我已经找到了答案,由于没有人写出好的答案,我会写出来。如果您对该主题有更多的了解并看到错误或安全问题,请告诉我,我会改正的。
1) CakePHP 所有权
CakePHP 文件应该归您所有,即机器的用户(无论您使用什么登录)。 没有 root 作为所有者!
OSX:johnsmith 的一部分 /Users/johnsmith
Linux:johnsmith 的 /home/johnsmith 部分
2) 应用程序/tmp 所有权。
根据 CakePHP documentation:
...确保目录 app/tmp 及其所有子目录在您的
cake 安装可由 Web 服务器用户写入。
选项 1:
用户所有者需要是 apache 的用户。组所有者可以是您所属的组,因此您也可以通过 finder/CLI 访问此文件夹。 没有root 作为所有者!
OSX: Apache 最近预装在 OSX 上,Apache 的默认用户是_www。但是,如果您不确定是否可以在 apache 运行时键入终端 ps aux | 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 需要 read 和 write 而没有 execute。为了让您访问它(假设您在拥有app/tmp 的组中),如果您将使用终端/查找器手动编辑内容,您还需要read 和write。所有其他用户都不应拥有任何权利。所以:
OSX&Linux: sudo chmod -R 660 app/tmp/。 -R 部分是对所有内部文件夹递归执行。第一个 6 用于用户所有者(OSX:_www 或 Linux:www-data),第二个 6 用于组所有者(OSX:staff 或 Linux:johnsmith),@ 987654360@ 适用于所有其他用户/访客。
注意:根据 CakePHP 的 this pull request 看来,CakePHP 2.4 将能够在 app/tmp/ 中创建子文件夹,这意味着它需要 7 而不是 6,因为用户现在变成了 760。
4) 上传文件夹
如果您想上传文件,您需要对 img/uploads 文件夹或您上传的任何位置进行类似设置。所有权将相同,但权限需要具有执行权限才能重命名和创建文件夹。所以以前的660 现在应该是760。此外,理想情况下,上传不在webroot/ 目录中,需要绝对路径。