Я использую это Простой Ajax-загрузчик плагин для загрузки файлов, тогда я использовал Это PHP библиотека управлять обработкой файлов, делать такие вещи, как генерация случайных имен файлов, изменение размера и указание каталога для сохранения файлов и т. д.
Вот код:
<?php
require('../classes/class.upload.php');
require('../classes/User.php');
//Process a file uploaded via XMLHttpRequest
$handle = new upload($_FILES['uploadfile']['tmp_name']);
if ($handle->uploaded) {
$handle->file_new_name_body = User::generateRandomString();
$handle->image_resize = true;
$handle->image_x = 360;
$handle->image_ratio_y = true;
$handle->process('temp-uploads');
if ($handle->processed) {
echo json_encode(array('success' => true, 'newfilename' => $handle->file_dst_name));
$handle->clean();
} else {
exit(json_encode(array('success' => false, 'msg' => $handle->error)));
}
}
Что ж, файл будет успешно загружен, но каким-то образом он станет недоступным через любую веб-страницу, он также будет недоступен, если я попытаюсь получить доступ к «site-name.com/directory-name/filename.jpg» в браузере. Показано 404 Не найдено.
Я также подумал, что это могут быть проблемы с правами доступа к файлам, но после предоставления загруженным файлам, включая их каталог) всех возможных разрешений, они все еще остаются 404 Not Found. Прямо сейчас файлы, загруженные ajax, видны в файловом менеджере cPanel, но недоступны в URL.
Наконец, из любопытства я загрузил другой файл непосредственно на сервер через cPanel, и этот файл был доступен, но другие все еще таинственно остаются недоступными с 404 Not Found. Я также переименовал один из недоступных файлов в test.jpg, но он остается недоступным.
Я пытался найти похожие проблемы здесь, но не могу найти.
Пожалуйста, что здесь не так?
Редактировать:
Я обнаружил, что это была проблема с правами владения файлами: каталог, в который загружаются файлы, и файлы в нем имеют разные имена владельцев 1128 и 99 соответственно.
Я изменил название вопроса, чтобы включить «Право собственности на файл / разрешение».
Также я обнаружил следующее сообщение в журналах ошибок несколько раз для каждого загруженного файла:
[Sat May 26 09:28:05.584102 2018] [core:error] [pid 9320:tid 140646036481792] [client 209.126.90.118:59372] Caught race condition abuser. attacker: 1128, victim: 99 open file owner: 99, open file: /home/royalsee/public_html/php/MichenoCoop/dashboard/temp-uploads/32_3.JPG, referer: http://michenocoop.com/dashboard/temp-uploads/
Я знаю, что вы уже проверили это:
могут быть проблемы с правами доступа к файлам, но после предоставления загруженных файлов
включая их каталог) все возможные разрешения, они все еще
404 Не Найдено
Но, возможно, проблема в владение файла, согласно этому ответу С.О. Что означает это сообщение об ошибке в журнале ошибок?:
Неверное разрешение или право собственности также могут вызвать эту ошибку. я имею
разрешил это путем смены владельца моего каталога приложений. это было
ранее принадлежал root.
И здесь снова с той же ошибкой, которую вы получаете в вашем лог-файле:
https://alexantop.wordpress.com/2013/05/07/caught-race-condition-abuser/
с тем же решением:
Измените владельца файлов на «имя пользователя».
Можете ли вы проверить право собственности на папка и попробуйте изменить его на www-data
или какой-то пользователь, который может быть доступен из Интернета.
Надеюсь, поможет!
Проблема была решена, когда я связался со службой поддержки моего хостинг-провайдера.
Я попросил их объяснить причину, и они ответили так:
Что бы это ни значило, я понятия не имею, однако моя проблема была решена, поэтому я публикую это, чтобы помочь всем, у кого может быть такая же проблема. Я надеюсь, что это помогает.