在 PHP 中写入文件时,/opt/lampp/htdocs/ 中的权限被拒绝

Permission denied in /opt/lampp/htdocs/ when writing a file in PHP

当用户创建个人资料并上传个人资料图片时,PHP "move_uploaded_file" 函数用于将此图片的临时副本移动到项目目录。

虽然我当前的代码在我的 Windows 10 机器上工作得很好,但由于文件权限不正确,它在我的 Mac 上不起作用。

我已经尝试过其他答案中提供的方法,运行终端命令后没有任何变化:

sudo chmod 644 /opt/lampp/htdocs/yourfolder

这适用于任何变体,包括:

sudo chmod -R 777 /opt/lampp/htdocs/yourfolder

请注意,我确实拥有笔记本电脑的管理员权限

其他用户表示这些命令已经解决了他们的问题,所以我怀疑我的不一样。

PHP 代码段:

$username = $_POST["username"];
$password = $_POST["password"];
$ext = null;

/* Debugging information
echo $_FILES["profile_pic"]["name"]."<br>";
echo $_FILES["profile_pic"]["tmp_name"]."<br>";
echo $_FILES["profile_pic"]["size"]."<br>";
echo $_FILES["profile_pic"]["error"]."<br>";
*/

if (strrpos($_FILES["profile_pic"]["name"], ".jpg") != null || strrpos($_FILES["profile_pic"]["name"], ".jpeg") != null) {
    $ext = ".jpg";
};
if (strrpos($_FILES["profile_pic"]["name"], ".png") != null) {
    $ext = ".png";
};

$path = __DIR__ . "\data\users\images\" . uniqid() . $ext;

if (move_uploaded_file($_FILES["profile_pic"]["tmp_name"], $path)) {
    echo("File successfully uploaded");
} else {
    echo("Upload failed");
};

返回:上传失败

抛出错误:

move_uploaded_file(/opt/lampp/htdocs/Test-Site\data\users\imagesc1dadd52bb71.jpg): failed to open stream: Permission denied in /opt/lampp/htdocs/Test-Site/signup_confirm.php on line 27

预期: 用户个人资料图片插入.../htdocs/Test-Site/data/users/images文件夹

实际: 抛出关于文件权限不正确的错误

错误的原因是我使用了不正确的目录分隔符(“\”而不是“/”用于 Mac)。更改这些会使个人资料图片移动到预期位置。