当用户创建配置文件并上传配置文件图片时,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 文件夹
实际:上面引发了有关文件权限错误的错误
答案 0 :(得分:-1)
该错误的原因是我使用了不正确的目录分隔符(对于Mac,使用的是“ \”而不是“ /”)。更改这些设置可使个人资料图片移动到预期位置。