无法使用具有0777权限的{mkdir()

时间:2016-07-17 16:23:20

标签: php xampp mkdir

我有这个:

<?php
$oldmask = umask(0);
mkdir("test", 0777);
umask($oldmask);
?>

但收到错误

Warning: mkdir(): Permission denied in /Applications/XAMPP/xamppfiles/htdocs/add/add_site.php on line 27

我使用XAMPP在Mac OSX El Capitan上。

2 个答案:

答案 0 :(得分:1)

因此,假设您通过Apache调用脚本,则apache用户必须具有在目录上写入的权限。

为了做到这一点,首先你必须找到运行apache的用户,为此你可以使用:

ps aux | grep http

ps aux | grep apache

当您找到apache用户时,您可以为apache创建一个可写目录:

mkdir /Applications/XAMPP/xamppfiles/htdocs/add/apachedir  # create a directory for apache
# for the line below, replace apache:apache by your apache user:group.
chown apache:apache /Applications/XAMPP/xamppfiles/htdocs/add/apachedir # give directory ownership to apache user

现在,如果您编辑脚本:

mkdir("./apachedir/test", 0777);

一切都应该有效。

然后我建议您在将目录权限更改为777时要小心,这意味着每个人都可以在文件夹中读/写。这在大多数情况下是一种不好的做法,并且当这个文件夹是apache webroot的儿子时很关键(任何用户都可以在这个目录中写入并且可以使用apache权限运行他们的代码)。

答案 1 :(得分:0)

您必须在xampp中为您提供htdocs目录的完全权限。