Стоит чистая операционка, ubuntu 14.04. Стоит apache + php5. На сайте стоит обычная форма:
<form name="contact-from" id="contact-form" action="" method="post" enctype="multipart/form-data">
<input style="display: flex;align-items: center;height: auto;padding: 15px 10px;" name="photo" type="file" class="input-full main-input required,email" placeholder="Фотография">
<button class="button-primary pull-right" type="submit" style="border:none;">
</form>
На сервере стоит обработчик:
$_FILES['photo']['name'] = strtolower($_FILES['photo']['name']);
$_FILES['photo']['tmp_name'] = strtolower($_FILES['photo']['tmp_name']);
$allow = array("jpg", "jpeg", "png", "gif");
$ext = substr($_FILES['photo']['name'], stripos($_FILES['photo']['name'], ".") + 1);
if(array_search($ext, $allow) !== false){
$fname = md5(date("d.m.Y H:i:s") . rand(0, 100000) . $_FILES['photo']['name']);
if(move_uploaded_file(realpath(dirname($_FILES['photo']['tmp_name'])), DIR . "/uploads/feedbacks/" . $fname . "." . $ext)){
$photo = $fname . "." . $ext;
}
}
Файл на сервер приходит, ошибок в файле нет на входе, после "move_uploaded_file" ошибок тоже нет. При этом, файл не загружается в нужную директорию. Права на все временные папки уже выставит в 777, права на папку, в которую загружаются файлы, выставил 777. В php.ini загрузка разрешена, максимальный размер файлов не превышаю, максимальный размер post запроса не превышаю.
Пытался загрузить вот таким способом:
$file = file_get_contents($_FILES['photo']['tmp_name']);
file_put_contents(DIR . "/uploads/feedbacks/" . $fname . "." . $ext, $file);
Выдает ошибку, пишет, что нет такого файла во временной директории. При этом, очень редко(может 1 из 50, а может и реже) файл загружается. Я уже сломал всю голову, после изменения php.ini перезагружал апач. Группы пользователей пытался менять везде у папок. В чем может быть проблема ?
UPD: В скрипте в конце прописал "sleep(60)" и посмотрел создается там файл вообще или нет, так вот, он создается, но с правами 600, на файле стоит юзер и группа "www-data".
UPD2: Поставил в апаче запуска от юзера, которому принадлежит каталог с временной директорией, так же группу указал нужную. Результат это не дало.
UPD3: Скачал временный файл, который пришел на сервак, залил его во временную директорию, выставил права, как на оригинале, выставил владельца и группу, как на оригинале - файл читается прекрасно.