move_uploaded_file不替换旧图像

时间:2014-10-28 04:11:23

标签: php php-ini

我遇到了问题。我有一个表单来更改用户个人资料图片。如果用户没有以前的图像,php工作正常,图像上传,如果文件存在,move_uploaded_file不替换图像,它可以在我的localhost上工作,但不能在我的在线服务器上工作。这是我的代码

if ($_POST['parse_var'] == "pic"){

// If a file is posted with the form
if ($_FILES['fileField']['tmp_name'] != "") { 
        $maxfilesize = 4109212; 

        if($_FILES['fileField']['size'] > $maxfilesize ) { 
                    $error_msg = '<font color="#FF0000">ERROR: Your image was too large, please try again.</font>';
                    unlink($_FILES['fileField']['tmp_name']); 

        } else if (!preg_match("/\.(gif|jpg|png|jpeg)$/i", $_FILES['fileField']['name'] ) ) {
                    $error_msg = '<font color="#FF0000">ERROR: Your image was not one of the accepted formats, please try again.</font>';
                    unlink($_FILES['fileField']['tmp_name']); 
        } else { 
                    $newname = "profile.jpg";
                    $place_file = move_uploaded_file( $_FILES['fileField']['tmp_name'], "users/$id/".$newname);
        }
    } 
}

任何想法为什么?它是第一次用户更改它时工作,它可能是一个PHP .ini问题? 第一次正确上传文件,一旦你上传了一张图片就不再有用了,就像你不能替换文件夹里面的图像一样

1 个答案:

答案 0 :(得分:0)

你可以从这里开始:

  • 跟踪错误:在error_reporting(E_ALL);下面添加$maxfilesize = 4109212;
  • 仔细检查文件夹位置users/$id/filename表示您将此图像发送到名为 users 的文件夹,该文件夹位于运行脚本文件的位置。也许你可以使用绝对路径。另外,$ id变量是否已设置?