Mindsparks Posted April 13, 2013 Share Posted April 13, 2013 Here's the backstory: I am helping someone transfer their website to a new hosting company. I recently uploaded all of the files from one host to another, which required me to also import the database. The website itself is running perfectly fine, except for one minor problem: the ability to upload files doesn't work anymore. The error I'm getting on the site itself is "Error Uploading Photo: Problem in Resizing". I didn't write the code myself and I'm not the best at debugging or writing PHP, I'm more of an HTML/CSS coder. The errors are coming from these lines: ImageCopyResized($destimg,$srcimg,0,0,0,0,$new_width,$new_height,ImageSX($srcimg),ImageSY($srcimg)) or $this->errmsg="Problem in resizing"; if (isset($_FILES['photo_upload']) && ($_FILES['photo_upload']['size'] > 0)){ . . . if ($pic->isError() == false){ $success = 1; } else{ $msg .= "Error uploading photo: " .$pic->getErrorMessage() . "<br/>"; $_REQUEST['photo_url'] = ""; //clear since it failed } } I'm trying to figure out how I should go about debugging this. I did a var_dump() of a few of the variables ($destimg, $srcimg): resource(7) of type (Unknown) bool(false) A colleague that I work with said to try resetting the permissions in the FTP for the folders to allow "Public Write" and that should fix it, but no success with that fix. As a side note, don't know if it's relevant, the "information_schema" database never imported via phpMyAdmin. Quote Link to comment Share on other sites More sharing options...
jcbones Posted April 13, 2013 Share Posted April 13, 2013 You may need to post the entire method, there may be some more de-bugging that could happen at other points to give the problem. Quote Link to comment Share on other sites More sharing options...
Mindsparks Posted April 14, 2013 Author Share Posted April 14, 2013 Here's the rest of the statement(s) for a photo upload: if (isset($_FILES['photo_upload']) && ($_FILES['photo_upload']['size'] > 0)){ // try uploading photo if (isset($_REQUEST['photo_upload_imgname']) && $_REQUEST['photo_upload_imgname'] != ""){ // we already have it saved, so lets overwrite it $pic = new Picture($ABS_PATH, $_FILES['photo_upload'], $MAX_FILE_SIZE, $_REQUEST['photo_upload_imgname']); $_REQUEST['photo_url'] = $_REQUEST['photo_upload_imgname']; } else{ // create new file $pic = new Picture($ABS_PATH, $_FILES['photo_upload'], $MAX_FILE_SIZE); $_REQUEST['photo_url'] = $pic->generateRandFileName(13,"jpg"); } if (isset($PHOTO_WIDTH)){ $pic->resizeToWidth($PHOTO_WIDTH); } if (isset($PHOTO_HEIGHT)){ $pic->resizeToHeight($PHOTO_HEIGHT); } $pic->save(); $success = 0; if ($pic->isError() == false){ $success = 1; } else{ $msg .= "Error uploading photo: " .$pic->getErrorMessage() . "<br/>"; $_REQUEST['photo_url'] = ""; //clear since it failed } } Quote Link to comment Share on other sites More sharing options...
ignace Posted April 14, 2013 Share Posted April 14, 2013 (edited) Your $srcimg is false which means it failed, we need to see the code that creates $srcimg. Edited April 14, 2013 by ignace Quote Link to comment Share on other sites More sharing options...
M1ndsparks Posted April 14, 2013 Share Posted April 14, 2013 Here's the entire picture class so far: <?php /* * upload and resize an image */ class Picture { var $abs_path; var $file_array; var $filename; var $save_dir; //where file will be saved var $errmsg=""; //string to be output if neccesary var $width; //height of final image var $height; //width of final image function Picture($abs_path, $file_array, $max_bytes, $filename=""){ $this->abs_path = $abs_path; $this->filename = $filename; $this->file_array = $file_array; if ($file_array['size'] > $max_bytes){ $this->errmsg = "File has exceeded the maximum file size permitted"; } } // generate a random string of numChar characters. // return it to the user function generateRandFileName($numChars, $fileExt){ $chars = array(); for($i='a'; $i < 'z'; $i++){ array_push($chars, $i); } for($i='A'; $i < 'Z'; $i++){ array_push($chars, $i); } for($i=0; $i < 10; $i++){ array_push($chars, $i); } // select N chars for name do{ $this->filename = ""; for($i=1; $i <= $numChars; $i++){ $this->filename .= $chars[rand(0,count($chars)-1)]; } $this->filename .= "." . $fileExt; }while (file_exists($this->abs_path.$this->filename)); return $this->filename; } function save(){ if ($this->errmsg != "") return false; if (isset($this->file_array['name']) && $this->filename != ""){ $full_image_location = $this->abs_path.$this->filename; if (move_uploaded_file($this->file_array['tmp_name'], $full_image_location) == false){ $this->errmsg = "File is not valid or could not be moved from temporary location to " . $full_image_location; } } } function resizeToHeight($height){ $this->resize(0, $height); } function resizeToWidth($width){ $this->resize($width, 0); } function resize($width=0, $height=0){ if ($this->errmsg != "") return false; // get aspect ratio $sizes = getimagesize($this->file_array['tmp_name']); if ( (($width != 0) && ($sizes[0] <= $width)) || (($height != 0) && ($sizes[1] <= $height)) ){ // size is less than desired, so we keep current size (to prevent distortion) $new_width = $sizes[0]; $new_height = $sizes[1]; } else if ($width != 0){ // resize based on width $new_width = $width; $new_height = abs($new_width/($sizes[0]/$sizes[1])); } else{ // resize based on height $new_height = $height; $new_width = abs($new_height/($sizes[1]/$sizes[0])); } // resize the image $destimg=ImageCreateTrueColor($new_width,$new_height) or $this->errmsg="Problem in creating image"; $srcimg=ImageCreateFromJPEG($this->file_array['tmp_name']) or $this->errmsg="Problem in opening source image"; ImageCopyResized($destimg,$srcimg,0,0,0,0,$new_width,$new_height,ImageSX($srcimg),ImageSY($srcimg)) or $this->errmsg="Problem in resizing"; ImageJPEG($destimg,$this->file_array['tmp_name'],90) or $this->errmsg="Problem in saving"; imagedestroy($destimg); var_dump($destimg); var_dump($srcimg); var_dump($new_width); } function isError(){ if ($this->errmsg != "") return true; else return false; } function getErrorMessage(){ return $this->errmsg; } } ?> Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.