注意:我想我已经找到了答案,由于没有人写出好的答案,所以我会写出来。如果您对该主题更了解并看到错误或安全问题,请告诉我,我会纠正它们。
1) CakePHP 所有权
CakePHP 文件应该归您所有,即机器的用户(无论您使用什么登录)。没有root
作为所有者!
OSXjohnsmith
:部分/Users/johnsmith
Linuxjohnsmith
:一部分/home/johnsmith
2) 应用程序/tmp 所有权。
根据 CakePHP文档:
...确保您的 cake 安装中的目录 app/tmp 及其所有子目录可由 Web 服务器用户写入。
选项1:
用户所有者需要是 apache 的用户。组所有者可以是您所属的组,因此您也可以通过 finder/CLI 访问此文件夹。没有root
作为所有者!
OSX: Apache 最近预装在 OSX 上,apache 的默认用户是_www
. 但是,如果您不确定是否可以通过ps aux | grep httpd
在 apache 运行时键入终端来找到它。最后一行是您刚刚键入的命令,因此请查看它的上方。
现在您知道您的 apache 用户,您必须将其分配给app/tmp/
. 您可以使用以下命令执行此操作:sudo chown -R _www app/tmp/
Linux:Linux上的默认用户通常是www-data
group www-data
。如果您不确定,请使用ps aux | grep httpd
找出用户并将sudo chown -R _www app/tmp/
所有权分配给该文件夹的 apache。
选项 2:
您可以将自己保留为用户所有者,但您将组所有者设置为 apache 所属的组。默认情况下 apache 有它自己的组,但你可以创建一个新组并将 apache 添加到它。
OSX:默认情况下,OSX 上的 apache 组与用户相同的 os: _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
),0
用于所有其他用户/来宾。
注意:根据这个对 CakePHP 的拉取请求,看起来 CakePHP 2.4 将能够在其中创建子文件夹,app/tmp/
这意味着它需要 a7
而不是6
用户现在变成760
.
4) 上传文件夹
如果要上传文件,则需要对img/uploads
文件夹或上传位置进行类似设置。所有权将相同,但权限需要具有执行权限才能重命名和创建文件夹。所以以前660
应该是现在760
。此外,理想情况下,上传不在webroot/
需要绝对路径的目录中。