在 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)。更改这些会使个人资料图片移动到预期位置。
当用户创建个人资料并上传个人资料图片时,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)。更改这些会使个人资料图片移动到预期位置。