2015-07-13 3 views
0

Хорошо, так что очень простой сценарий загрузки из w3schools, я попытался реализовать, но я продолжаю получать сообщение об ошибке.move_uploaded_file() throwing error

Для справки, я использую WordPress и необходимую для создания пользовательских метод загрузки, так что я не могу использовать пользовательские поля и т.д ..

HTML раздел относительно этого:

<form method="post" id="form" enctype="multipart/form-data"> 
       <input type="file" name="frontImage" id="frontImage"> 

PHP стороны вещей:

$target_dir = home_url() . "/wp-content/uploads/survey/"; 
     $target_file = $target_dir . basename($_FILES["frontImage"]["name"]); 
     $uploadOk = 1; 
     $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
// Check if image file is a actual image or fake image 

      $check = getimagesize($_FILES["frontImage"]["tmp_name"]); 
      if($check !== false) { 
       $uploadOk = 1; 
      } else { 
       echo "File is not an image."; 
       $uploadOk = 0; 
      } 

// Check if file already exists 
     if (file_exists($target_file)) { 
      echo "Sorry, file already exists."; 
      $uploadOk = 0; 
     } 
// Check file size 
     if ($_FILES["frontImage"]["size"] > 500000) { 
      echo "Sorry, your file is too large."; 
      $uploadOk = 0; 
     } 
// Allow certain file formats 
     if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" 
      && $imageFileType != "gif") { 
      echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; 
      $uploadOk = 0; 
     } 
// Check if $uploadOk is set to 0 by an error 
     if ($uploadOk == 0) { 
      echo "Sorry, your file was not uploaded."; 
// if everything is ok, try to upload file 
     } else { 
      if (move_uploaded_file($_FILES["frontImage"]["tmp_name"], $target_file)) { 
       echo "The file ". basename($_FILES["frontImage"]["name"]). " has been uploaded."; 
      } else { 
       echo "Sorry, there was an error uploading your file."; 
      } 
     } 

Okay s О ошибки я получаю:

"Sorry, there was an error uploading your file." 

Это означает, что раздел move_uploaded_file() не удалось.

Если я print_r ($ _ FILES) я получаю:

Array 
(
    [frontImage] => Array 
     (
      [name] => Everest_kalapatthar_crop.jpg 
      [type] => image/jpeg 
      [tmp_name] => /Applications/MAMP/tmp/php/phpHw9BcP 
      [error] => 0 
      [size] => 93053 
     ) 

) 

Есть ли причина, почему это не работает?

+1

Что такое * $ target_dir *? Это правильный путь к вашему каталогу? Если да, убедитесь, что разрешения для папки установлены на * 0777 * –

+0

Вывод '$ target_dir' убедитесь, что он действителен. –

+0

@ EM-Creations как target_dir, так и target_file являются правильными путями –

ответ

0

Проверьте, действительно ли ваш целевой каталог доступен для записи с использованием этого кода.

Если ваш целевой каталог не доступен для записи на Mac, вы можете запустить его в терминале.

ls -lah /full/path/to/the/survey/directory

и проверить группу и владельца, он должен принадлежать _www как остальная часть каталогов на вашем веб-сайте. Если ваш пользователь Apache отличается, отрегулируйте по мере необходимости.

Если это не так, то выполните следующие команды:
sudo chown _www:_www /full/path/to/the/survey/directory/
sudo chmod 0755 /full/path/to/the/survey/directory/

<?php 

$target_dir = home_url() . "/wp-content/uploads/survey/"; 
$target_file = $target_dir . basename($_FILES["frontImage"]["name"]); 

// check if dir is writable  
if (!is_writable($target_dir)) { 
    echo $target_dir . ' is not writable'; 
} 
else { 
    // proceed to write the file there 
    // either set a boolean flag $writable = 1 or 
    // insert into if/else chain 
} 

// check if dir exists 
if (!file_exists($target_dir)){ 
    echo $target_dir . ' does not exist'; 
} 
else { 
    // proceed with the rest of your logic 
    // either set a boolean flag $dirExists = 1 or 
    // insert this into your if/else chain 
} 
+0

говорит, что он не доступен для записи –

+0

, но когда я иду в папку, он говорит, что для чтения/записи мне –

+0

его нужно перезаписывать пользователем php/apache, дайте мне секунду и я обновлю ответ –