Я работаю на веб-сайте клиента, для которого я не написал код. У меня проблемы с файлами, которые можно загрузить.PHP: Файл не может быть загружен (сообщение «404 Not Found»)
Речь идет о субдомене, где пользователи могут загружать файлы курса. Файлы веб-сайта содержатся в папке «Курсы» (на корневом уровне).
- Файл для отображения загружаемых файлов курса содержится в «courses/displayfiles.php».
- Загружаемые файлы содержатся в папке в "курсах/папке загрузки". Внутри этой папки у каждого пользователя есть своя папка с файлами , которая имеет имя пользователя.
displayfiles.php: Следующий код успешно отображает все файлы, которые могут быть загружены с помощью вошедшего в систему пользователя:
$path = "downloadfolder/" . $_SESSION['userId'] . "/";
$files = array();
$output = @opendir($path) or die("$path could not be found");
while ($file = readdir($output)) {
if (($file != "..") and ($file != ".")) {
array_push($files, $file);
}
}
closedir($output);
sort($files);
foreach ($files as $file) {
echo '<a class="imtext" href="downloadfolder/' . $_SESSION['userId'] . '/' . $file . '/">' . $file . '</a><br/>';
}
Так что не работает в этом коде: Когда пользователь нажимает в файле, я получаю сообщение «404 Not Found», что файл не найден. Как это может быть?
Почему отображение файлов полностью работает нормально, но в то же время я получаю ошибку 404 при нажатии на файл? Путь к файлам ($path
) должен быть правильным, или нет? Какие дальнейшие исследования я должен предпринять, чтобы решить эту проблему?
* UPDATE *
я решил изменить цикл файлов, как следует (изменение HREF):
foreach ($files as $file) {
echo '<a class="imtext" href="http://'.$_SERVER['HTTP_HOST']. '/downloadfolder/' . $_SESSION['courseId'] . '/' . $file . '/">' . $file . '</a><br/>';
}
Тем не менее, когда я нажимаю на файл, я получаю 404 Not Found ошибка. Как это может быть?
Лучший способ для вас - изучить сгенерированную ссылку. Это может быть неправильное место. Убедитесь, что все соответствующие каталоги существуют. –
Я изменил href на следующее: 'href =" http: //'.$_SERVER ['HTTP_HOST']. '/ Downloadfolder /'. $ _SESSION ['courseId']. '/'. $ File. '/ ">' это определенно место, где находится файл. все-таки я получаю ошибку 404. как это может быть? – Max
Если вы уверены, что все в порядке, и файл действительно существует, пожалуйста, взгляните на это: http://stackoverflow.com/questions/24654907/why-server-says-404-file-or-directory-not-found -когда-файл существовать. Может быть, ссылка будет полезна. –