用PHP编写文件时/ opt / lampp / htdocs /中的权限被拒绝

时间:2018-12-22 03:56:33

标签: php file-permissions filestream

当用户创建配置文件并上传配置文件图片时,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\images\5c1dadd52bb71.jpg):无法打开流:在/opt/lampp/htdocs/Test-Site/signup_confirm.php中,权限被拒绝第27行

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

实际:上面引发了有关文件权限错误的错误

1 个答案:

答案 0 :(得分:-1)

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