PHP копирование или перемещение загруженного файла - ничего не происходит, но нет ошибки - PullRequest
3 голосов
/ 22 августа 2011

Я не получаю никаких ошибок, но также не копирую файл:

$upload_folder = "uploads/";

$name_of_uploaded_file = basename($_FILES['uploaded_file']['name']);

$prefix = date("YmdHis");
$path_of_uploaded_file = "$upload_folder$prefix-$name_of_uploaded_file";
$tmp_path = $_FILES["uploaded_file"]["tmp_name"];

if(is_uploaded_file($tmp_path))
{
  if(!copy($tmp_path,$path_of_uploaded_file))
  {
    $errors .= '\n error while copying the uploaded file';
  }
}

echo $path_of_uploaded_file;
echo $name_of_uploaded_file;
echo $errors;

Это нормально работало в среде разработки Windows, но развертывание на веб-сервере Linux делает это,Сначала мы получили ошибку копирования, затем добавили разрешения в каталог закачек.Теперь мы ничего не получаем.

Я также пробовал это с move_uploaded_file, без ошибок, но без результирующего файла в каталоге загрузки.

Ответы [ 2 ]

6 голосов
/ 22 августа 2011

Может быть, вы можете добавить проверку, если is_uploaded_file возвращает true.

if(is_uploaded_file($tmp_path))
{
  if(!copy($tmp_path,$path_of_uploaded_file))
  {
    $errors .= '\n error while copying the uploaded file';
  }
} else {
    $errors .= '\n error while uploading file'; // maybe  upload_max_filesize exceeded
// try to get the specific error

 switch($_FILES['uploaded_file']['error']){
    case 0: //no error; possible file attack!
      echo "There was a problem with your upload.";
      break;
    case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini
      echo "The file you are trying to upload is too big.";
      break;
    case 2: //uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the html form
      echo "The file you are trying to upload is too big.";
      break;
    case 3: //uploaded file was only partially uploaded
      echo "The file you are trying upload was only partially uploaded.";
      break;
    case 4: //no file was uploaded
      echo "You must select an image for upload.";
      break;
    default: //a default error, just in case!  :)
      echo "There was a problem with your upload.";
      break;

}

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

см. документация php для получения дополнительной информации о возможных проблемах.

1 голос
/ 22 августа 2011
$upload_folder = "uploads/";
$path_of_uploaded_file = "$upload_folder$prefix-$name_of_uploaded_file";

Заставь $path_of_uploaded_file стать

$path_of_uploaded_file = "$upload_folder/$prefix-$name_of_uploaded_file";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...