Apache-2.2

授予使用者 mkdir()

  • September 28, 2011

我有一個使用該函式的 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

據我所知,我所做的一切都是正確的,但它仍然無法正常工作…… =\

由於您在 apache 下執行此程序,因此 apache 使用者(通常為 www-data)需要對其嘗試執行的目錄的寫訪問權限mkdir()。將 www-data 添加到擁有該目錄chgrp www-data dir的組或更改組所有權。

為了擴展 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 只允許對組成員和所有者進行讀/寫,它更安全。

引用自:https://serverfault.com/questions/316605