linux服务器上的图片上传(PHP)

时间:2017-03-11 03:57:34

标签: php apache

我正在尝试将图片上传到服务器。当我在本地电脑上使用时,以下代码有效,但当我尝试使用服务器时,图像不会上传。

$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!';

1 个答案:

答案 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']),使用它可以编写,甚至可以在指定目录之外读取