我有一个 php 脚本,我在其中使用该函数mkdir()
,但我得到了
警告:mkdir() [function.mkdir]:权限被拒绝
我如何授予用户使用该功能的权限?
Apache/CentOS
更新
这是我尝试在其中创建文件夹的文件夹的权限:
drwxrwxrwx 2 rayhawkpascom pasgroup 4096 Sep 28 15:07 uploads
* 用户和组都是递归的。
以下是 pasgroup 的成员
# grep pasgroup /etc/group
pasgroup:x:562:rayhawkpascom,apache,nobody
* 我尝试过 www-data,但是
# /usr/sbin/usermod -G pasgroup www-data
usermod: user www-data does not exist
据我所知,我已正确完成所有操作,但它仍然不起作用...=\
答案1
由于您在 apache 下运行它,因此 apache 用户(通常是 www-data)需要对其尝试运行的目录具有写权限mkdir()
。将 www-data 添加到拥有该目录的组或执行chgrp www-data dir
更改组所有权的操作。
答案2
为了扩展 Slilibri 的答案,有几种方法可以为 Apache 和底层用户授予 mkdir 权限(通常是 www-data,但也可以是 Apache,具体取决于发行版)
将把文件夹的所有者更改为 apache,授予文件夹及其子文件夹的 R/W/E 权限,但可能会破坏其他程序对该文件夹的访问权限。-R 是可选的,但如果脚本要创建子文件夹,则可能是必要的,如果 apache 是唯一使用该文件夹的程序,这将是最好的设置。
chown -R www-data folder
将更改文件夹的组但不会更改所有者,这可能足以创建文件夹,但根据文件夹的安全设置,可能不行。如果你运行该命令
#ls -l
drwxrwxr-x 3 root admin 102 19 May 2009 httpd
第一个数字串代表该文件/文件夹的安全设置。d 表示它是一个文件夹,第一个 r 表示所有者可以读取该文件/文件夹,第二个 r 表示组可以读取该文件夹,第三个 r 表示每个人都可以读取该文件夹。同样的理论也适用于 x,第一个 x 表示所有者可以执行该文件/文件夹等......
w 表示写入,第一个和第二个 w 允许所有者和组具有写访问权限,但第三个 w 被替换为“-”,因为第三个字母指定所有人,这意味着除所有者和组成员之外的所有人都可以写入此文件/文件夹。
要允许每个人读/写/执行,您可以使用此命令。
chmod -R 777 folder
不过更好的设置是 775,775 只允许组成员和所有者进行读/写,它更安全。