无法使用具有 0777 权限的 mkdir() 创建目录
Can't create a directory using mkdir() with 0777 permissions
我有这个:
<?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
我在 Mac OSX El Capitan 使用 XAMPP。
因此假设您通过 Apache 调用脚本,则 apache 用户必须有权写入目录。
为此,首先您必须找到 运行ning 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 权限)。
您必须对 xampp 中的 htdocs 目录授予完全权限。
我有这个:
<?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
我在 Mac OSX El Capitan 使用 XAMPP。
因此假设您通过 Apache 调用脚本,则 apache 用户必须有权写入目录。
为此,首先您必须找到 运行ning 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 权限)。
您必须对 xampp 中的 htdocs 目录授予完全权限。