2012-03-04 217 views
2

这似乎是一个常见问题,但我似乎无法找到我正在寻找的确切答案。 我在OSX上运行XAMPP,并在我的Web应用程序中试图让管理员创建一个目录,如果没有新的目录。因此,在htdocs/mywebapp/images下,如果一个目录不存在,比如说2012,那么mkdir()并开始上传文件到该目录。php mkdir()权限被拒绝mac

用ls从mywebapp目录-l显示,图像目录作为

drwxr-xr-x 18 myusername admin 612 Feb 12 17:32 images 

创造所以我想的第一件事就是

sudo chmod 0775 images 

这并没有帮助。综观httpd.config文件显示用户/组被定义为WWW:万维网所以我试图改变所有者/组到:

sudo chown www:www images 

这导致,正如预期:

drwxrwxr-x 18 _www  _www  612 Feb 12 17:32 images 

但是,我再次获得了权限被拒绝的错误。所以,我不知道下一步是什么。 我使用得到这一点的PHP代码是在这里:

$directory_self = dirname(__FILE__); 
$base_image_path = $directory_self . '/images/'; // outputs "/Applications/XAMPP/xamppfiles/htdocs/mywebapp/images/" 
$year = '2012'; 
$image_path = $base_image_path . $year . '/'; // outputs "/Applications/XAMPP/xamppfiles/htdocs/mywebapp/images/2012/" 
if(!file_exists($image_path)){ 
    mkdir($image_path, 0775); 
} 

感谢您的帮助。

回答

5

尝试检查实际进程所有者:

$processUser = posix_getpwuid(posix_geteuid()); 
    echo($processUser['name']); 
+0

啊......它显示 “无人”。所以我应该对任何人都没有帮助:[group ???] ...但我很好奇为什么如果用户在配置文件中被定义为www,流程所有者将成为无人。另外,我如何才能在终端中找到真正的流程用户?谢谢! – earachefl 2012-03-04 19:38:31

+0

我看到,如果我运行$ processGroup = posix_getgrgid($ processUser ['gid']); echo $ processGroup ['name'];该团体是“没有人”......所以我现在就试试。而且,是的,它工作,我能够mkdir()。 – earachefl 2012-03-04 19:50:51

+0

另一个问题是为什么使用mkdir(文件路径,0755)指定权限与mkdir(文件路径,0775)没有不同之处......都在创建目录后显示drwxr-xr-x。 – earachefl 2012-03-04 20:01:19