【问题标题】:Can't create a directory using mkdir() with 0777 permissions无法使用具有 0777 权限的 mkdir() 创建目录
【发布时间】:2016-07-17 16:23:19
【问题描述】:

我有这个:

<?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。

【问题讨论】:

    标签: php xampp mkdir


    【解决方案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 权限运行他们的代码)。

    【讨论】:

    • 谢谢。我希望所有用户都能够通过填写 html
      向数据库(我已经实现)添加一些东西。然后,我需要为每个条目创建一个新的 HTML 页面。那么有没有办法在不授予他们目录权限的情况下做到这一点?
    • @LouisC。是的,使用 PHP 获取表单参数,并将它们保存到数据库中。与 PHP 一起使用的常见 SGBD 是 MySQL(使用的 fork 是 mariaDB)。如果您在使用 PHP/MySQL 时遇到任何问题,请不要犹豫创建一个新问题 ;)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-09-29
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-20
      • 2021-12-11
      • 2018-02-06
      相关资源
      最近更新 更多