Есть один сайт, размещенный на двух разных серверах (хостингах).
На сайте есть ф-я асинхронной загрузки изображения.
Код на 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?