我正在尝试将图片上传到服务器。当我在本地电脑上使用时,以下代码有效,但当我尝试使用服务器时,图像不会上传。
$img = $_FILES['file_uploaded']['name'];
$image_temp = $_FILES['file_uploaded']['tmp_name'];
if(move_uploaded_file($image_temp, "uploads/" . $img)){
$fullpath = dirname(__FILE__) . '\\images\\' . $img;
}
else
echo 'Failed!';
答案 0 :(得分:0)
您是否在服务器上拥有相同的文件权限?文件夹/var/www/html/uploaded
是否存在并且可由Web服务器用户(通常是www-data)写入?
尝试在服务器终端中运行以下命令:
sudo su
mkdir /var/www/html/uploads
chmod -R 775 /var/www/html/uploads
chown -R www-data:www-data /var/www/html/uploads
如果使用www-data,请使用您自己的Web服务器用户进行更改。
“已修复”脚本:
$img = $_FILES['file_uploaded']['name'];
$upload_dir = "/var/www/html/uploads/";
$image_temp = $_FILES['file_uploaded']['tmp_name'];
if (file_exists($image_temp)) {
echo "Temp file doesn't exist.";
return false;
}
$move_file = move_uploaded_file($image_temp, $upload_dir . $img);
if ($move_file) {
$fullpath = $upload_dir . $img;
}
else {
echo 'Failed!';
return false;
}
您应该编写其他检查,以便了解应用程序失败的位置。
关于安全性,您永远不应该信任用户。在这种情况下,我们使用用户提供的文件名($_FILES['file_uploaded']['name']
),使用它可以编写,甚至可以在指定目录之外读取