PHP 和 Linux 权限

PHP 和 Linux 权限

地狱0

我们(我们公司)一直使用同一个 CMS 来创建多个网站。我们已经多次遇到过这个问题,但想不出解决办法。

问题描述如下:在此 cms 中可以创建图片库。当您通过 CMS 创建图库文件夹时,该文件夹由 www 用户创建,其权限设置为 0666。当用户使用其编辑器视图将图片上传到此图库时,图片将上传到先前创建的文件夹并裁剪为所需大小。将创建缩略图和其他文件夹来保存不同大小的图片。

如果您通过 ftp 为画廊创建文件夹,则画廊的所有者是 ftp 用户。如果您手动将权限设置为 0666 并以正确的权限上传文件,一切似乎都很好。现在在公共视图中,如果您选择此先前创建的文件夹作为画廊文件夹,则 cms 无法创建 .thumbnail 子目录(以及其他所需的子目录)。文件夹之间的唯一区别是文件夹的所有者。

现在我正在尝试获取此托管帐户的 php 日志。我想到时候我会得到更多信息。

艾伦

答案1

在 Linux 中,进入目录需要执行权限。因此,需要将 Web 用户的权限设置为 7 (rwx),以使其能够创建子目录。

实际上,要创建子目录,用户只需要对目录具有 wx 权限。要能够完整列出目录的内容,用户需要 rx 权限。要 cd 进入目录,您肯定需要 x。

答案2

我会尝试将 apache 和 ftp 用户添加到同一组(通常是 www-data),这可能会解决这个问题

答案3

为了实现这一点,你必须在 WWW 用户和 FTP 用户之间共享一个组,例如内容使用者然后,您必须将文件夹的组更改为新的 contentusers 组,并将目录上的“SetGID”位设置为(查看更多http://www.greenend.org.uk/rjk/2004/perms.html)。将使用适当的组来创建新文件。

答案4

我修复了协作项目管理软件的类似问题,您只需要找到具有创建文件夹的方法的类...如果代码注释得当,这可能很容易......

bool mkdir  ( string $pathname  [, int $mode= 0777  [, bool $recursive= false  [, resource $context  ]]] )

正如您在 make dir 方法的这个简单解释中所看到的(位于php.net),当您找到它时,您只需将 $mode 变量更改为您想要的值……

相关内容