Move_uploaded_file returns false, but $ _FILES ['uploadedfile'] ['error'] == 0

I use the POST method to upload a photo to the upload_photo.php file, which uses uploader.php to process the image. Uploader.php will resize the image and overwrite the old one. It works fine locally, but not on the server.

move_uploaded_file returns false, but $_FILES['uploadedfile']['error'] == 0 , which does not because of me.

I published the whole uploader.php file and a fragment from the upload_photo.php file that shows the form tag.

 <?php //This is uploader.php session_start(); include ('dbconfig.php'); include('SimpleImage.php'); mysql_connect(HOST, USERNAME, PASSWORD); $conn = mysql_select_db(DB_NAME); $target_path = "uploads/"; $target_path = $target_path . renameImage(); $_SESSION['client_photo'] = $target_path; $query = "UPDATE client "; $query .= "SET personal_photo = ('$target_path') "; $query .= "WHERE client_id = ".$_SESSION['clientID']; $results = mysql_query($query) or die('Error msg: '.mysql_error().'<br/> sql: '.query.'<br/>'); if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { $msg = "The file ". $_SESSION['client_photo']. " has been uploaded"; chmod($target_path, "0666"); $work = new ImgResizer($target_path); $work -> resize(600, $target_path); } else{ $msg = "There was an error uploading the file, please try again!"; $msg .= $_FILES['uploadedfile']['error']; } header("Location: upload_photo.php?msg=$msg"); function renameImage(){ mysql_connect(HOST, USERNAME, PASSWORD); $conn = mysql_select_db(DB_NAME); $sql = "SELECT first_name, last_name, client_id FROM client WHERE client_id = ".$_SESSION['clientID']; $res = mysql_query($sql) or die('Error msg: '.mysql_error().'<br/> sql: '.$sql.'<br/>'); if($row = mysql_fetch_array($res, MYSQLI_ASSOC)){ $_SESSION['successphoto'] = 1; return $row{first_name}.'_'.$row{last_name}.'_'.$row{client_id}; } else{ echo "There was an error while fetching the row.<br/>"; } } class ImgResizer { private $originalFile = ''; public function __construct($originalFile = '') { $this -> originalFile = $originalFile; } public function resize($newWidth, $targetFile) { if (empty($newWidth) || empty($targetFile)) { return false; } $src = imagecreatefromjpeg($this -> originalFile); list($width, $height) = getimagesize($this -> originalFile); $newHeight = ($height / $width) * $newWidth; $tmp = imagecreatetruecolor($newWidth, $newHeight); imagecopyresampled($tmp, $src, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height); if (file_exists($targetFile)) { unlink($targetFile); } imagejpeg($tmp, $targetFile, 85); // 85 is my choice, make it between 0100 for output image quality with 100 being the most luxurious } } ?> 

Here is a fragment of the upload_photo.php file

 echo '<form enctype="multipart/form-data" action="uploader.php" method="POST">'; echo '<tr>'; //echo "<td colspan='2'>".$_GET['text']."</td>"; echo '</tr>'; echo '<tr align="center">'; echo '<td colspan="2">'; echo '<input type="hidden" name="MAX_FILE_SIZE" value="5000000" /> Choose a file to upload: <input name="uploadedfile" type="file" accept="image/*"/><br /> <input type="submit" value="Upload File" /> </form>'; 
+4
source share
1 answer

This probably means that the download went well - the file was uploaded to your temporary directory, but the file could not be transferred to the destination you installed.

You must double check the path where you move the file, and make sure that the network user ( apache , www or something else) has write permissions to this directory.

+3
source

Source: https://habr.com/ru/post/1446562/


All Articles