我在PHP项目中使用mkdir()
上传图像时遇到了问题。创建任何目录的权限被拒绝。当我在不使用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(): Permission denied
警告:move_uploaded_file(images/KhqnrHx0/image.png): failed to open stream
警告:move_uploaded_file(): able to move '/opt/lampp/temp/phpmYtqa7' to 'image.png'
当我运行<?php echo 'whoami';?>
的结果返回守护进程,而不是我的用户名,所以我认为这是为什么权限不断被拒绝的原因,但我不知道如何安全/正确地更改权限。
有人能解决这个问题吗?
您猜对了:权限问题。如何设置权限取决于你的环境,你还没有告诉我们太多。
我看到你有/opt/lampp,所以我正在设计一个linux堆栈。但是哪种口味呢?Centos吗?Debian吗?小狗Linux ?谁知道呢?
现在让您快速进入您想要在其中创建映像目录的目录,并将其所有者设置为(您的apache用户),并将其权限设置为755。这将使第一个比特工作。然后你需要设置umask。