etrid
@etrid

Почему на разных сайтах один и тот же скрипт исполняется по разному?

Есть один сайт, размещенный на двух разных серверах (хостингах).
На сайте есть ф-я асинхронной загрузки изображения.

Код на js:
$(document).ready(function(){
  $("#form-file-ajax").on('submit', function(e){
    e.preventDefault();
    var formData = new FormData();
    var form = $(this);
    formData.append('file', $('#file').prop("files")[0]);
    $.ajax({
      url: '/assets/php/upload.php',
      type: 'post',
      processData: false,
      contentType: false,
      cache:false,
      dataType : 'text',
      data: formData,
      success: function(data){
        //form[0].reset();
        data = JSON.parse(data);
        $('#upl_img').attr('src','/assets/img/questions/'+data.file);
        $('#upl_img').attr('data-href',data.href);
        //console.log(data.file);
        console.log(data.err);
      }
    });
  });
});


Код на PHP:
<?php
if(isset($_FILES['file'])) {

  if ($_FILES['file']['name'] !== '' && $_FILES['file']['error'] == 0)
  {
    try {
      $fileTmpName = $_FILES['file']['tmp_name'];
      $fi = finfo_open(FILEINFO_MIME_TYPE);
      $mime = (string) finfo_file($fi, $fileTmpName);
      if (strpos($mime, 'image') === false)
      {
        $data = ['err' => 'Можно загружать только изображения с расширениями  .jpg, .jpeg, .png!'];
        echo json_encode($data);
        exit();
      }
      $image = getimagesize($fileTmpName);
      $extension = image_type_to_extension($image[2]);
      $name = randomFileName($extension);
      $file = $name.str_replace('jpeg', 'jpg', $extension);
      if (!move_uploaded_file($fileTmpName, __DIR__ . '/../img/questions/'.$file))
      {
        $data = ['err' => 'При загрузке изображения произошла ошибка на сервере!'];
        echo json_encode($data);
          exit();
      }

      $data = ['file' => $file, 'err' => 'none', 'href' => 'questions/'.$file];
      echo json_encode($data);
    } catch (Exception $e) {
      die($e->getMessage());
    }
  }
}


function randomFileName($extension = false)
{
  $extension = $extension ? '.' . $extension : '';
  do {
    $name = md5(microtime() . rand(0, 9999));
    $file = $name . $extension;
  } while (file_exists($file));

  return $file;
}


Вопрос. С чем может быть связанно то, что на одном сервере ф-я отрабатывает отлично, а на втором, проверка if (!move_uploaded_file($fileTmpName, __DIR__ . '/../img/questions/'.$file)) возвращает true?
  • Вопрос задан
  • 108 просмотров
Решения вопроса 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
потому что надо смотреть в логе веб-сервера, какая именно произошла ошибка
Ответ написан
etrid
@etrid Автор вопроса
с настройками php
параметры: upload_max_filesize, post_max_size
Проблема была в размере файла
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
artzolin
@artzolin
php, WordPress разработка сайтов artzolin.ru
Функция move_uploaded_file() возвращает TRUE/FALSE. Ну так вы тогда и проверяйте в if() на эти значения
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы