我目前无法将图片上传到目录, 这是我的PHP代码:
<?php
//Check whether the user has uploaded a profile pic or not
$check_pic = mysqli_query($conn,"SELECT profile_pic FROM users2 WHERE username='$user'");
$get_pic_row = mysqli_fetch_assoc($check_pic);
$profile_pic_db = $get_pic_row['profile_pic'];
if ($profile_pic_db == "") {
$profile_pic = "images/default_pic.jpg";
}
else
{
$profile_pic = "userdata/profile_pics/".$profile_pic_db;
}
//Profile Image upload script
if (isset($_FILES['profilepic'])) {
if (((@$_FILES["profilepic"]["type"]=="image/jpeg") || (@$_FILES["profilepic"]["type"]=="image/png") || (@$_FILES["profilepic"]["type"]=="image/gif"))&&(@$_FILES["profilepic"]["size"] < 1048576)) //1 Megabyte
{
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$rand_dir_name = substr(str_shuffle($chars), 0, 15);
mkdir("/userdata/profile_pics/$rand_dir_name");
if (file_exists("/userdata/profile_pics/$rand_dir_name/".@$_FILES["profilepic"]["name"]))
{
echo @$_FILES["profilepic"]["name"]." Already exists";
}
else
{
move_uploaded_file(@$_FILES["profilepic"]["tmp_name"],"/userdata/profile_pics/$rand_dir_name/".$_FILES["profilepic"]["name"]);
$profile_pic_name = @$_FILES["profilepic"]["name"];
$profile_pic_query = mysqli_query($conn,"UPDATE users2 SET profile_pic='$rand_dir_name/$profile_pic_name' WHERE username='$user'");
}
}
else
{
$msg5 = "Invailid File! Your image must be no larger than 1MB and it must be either a .jpg, .jpeg, .png or .gif";
}
}
?>
这是我的HTML代码:
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="profilepic" /><br><br>
<input type="submit" name="uploadpic" value="Change Profile Photo">
</form>
其中$ user是登录用户的用户名,我的数据库连接工作正常:我可以更新数据库中的profile_pic
查询,但不能将其上传到userdata文件夹。我使用的是godaddy帐户,我的php.ini
文件中是否需要更改配置?
答案 0 :(得分:1)
我相信问题就在这里
mkdir("/userdata/profile_pics/$rand_dir_name");
这是试图在系统的根目录中创建一个文件夹,你几乎肯定也没有访问权限。您可能希望相对于您的网站创建它,例如:
mkdir(__DIR__."/userdata/profile_pics/$rand_dir_name");
可能会解决问题。
此外,如果父文件夹不存在,您可以使用mkdir
的第三个参数来创建它们。默认情况下,mkdir
仅创建最后一个目录,因此如果它之前的那个目录不存在,它将失败。