【问题标题】:mkdir(): Permission denied when running php via XAMPP/Apachemkdir():通过 XAMPP/Apache 运行 php 时权限被拒绝
【发布时间】:2021-06-11 12:35:18
【问题描述】:

我在使用mkdir() 在 PHP 项目中上传图片时遇到问题。创建任何目录的权限被拒绝。当我在不使用 Apache 并在 mac 上使用内置的 php -S 服务器尝试此操作时,目录的创建毫不费力。

if (!is_dir('images')) {
    mkdir('images');
  }

  if ($image && $image['tmp_name']) {
    $imagePath = 'images/' . randomString(8) . '/' . $image['name'];
    mkdir(dirname($imagePath));
    move_uploaded_file($image['tmp_name'], $imagePath);
  }

我不断在上面的代码中收到这些错误:

警告:mkdir():权限被拒绝
警告:move_uploaded_file(images/KhqnrHx0/image.png):无法打开流
警告:move_uploaded_file():无法将“/opt/lampp/temp/phpmYtqa7”移动到“image.png”

当我运行<?php echo 'whoami';?> 时,结果返回守护进程而不是我的用户名,所以我认为这就是权限不断被拒绝的原因,但我不知道如何安全/正确地更改权限。

有人能解决这个问题吗?

【问题讨论】:

  • 您需要授予脚本使用该目录的权限,就像在 Linux 中我们将 www-data 作为用户和组分配给该目录。

标签: php apache permissions xampp mkdir


【解决方案1】:

您猜对了:权限问题。如何设置权限取决于您的环境,您并没有告诉我们太多。

我看到你有 /opt/lampp,所以我正在设计一个 linux 堆栈。但哪种味道?森托斯?德比安?小狗Linux?谁知道?

现在要让您快速上手,只需转到您要在其中创建图像目录的目录并将其所有者设置为(您的 apache 用户)并将其权限设置为可能 755。这将是第一个位在职的。然后你需要设置umask。

【讨论】:

    猜你喜欢
    • 2015-05-05
    • 2018-03-19
    • 1970-01-01
    • 2013-05-11
    • 2012-03-22
    • 1970-01-01
    • 2016-08-24
    • 2013-07-01
    • 2012-08-13
    相关资源
    最近更新 更多