Загрузка/Загрузка папки каталога локального хоста приводит к тому, что URL-адрес не найден

#php #local

Вопрос:

Кажется, у меня возникли некоторые проблемы с получением простого PDF-файла для отображения в браузере через локальный хост.

Я использую PHP «переместить файл загрузки» в каталог, который работает нормально.

 $_SERVER['DOCUMENT_ROOT'].'TM470/FileServer/EmployeeCorrespondence/' . $filename;
 

Существует также вызов Mysql, который сохраняет URL-адрес

  $sql = "INSERT INTO files (name, size, path) VALUES ('$filename', '$destination')";
 

Снова никаких проблем с вызовом mysql.

Когда я извлекаю URL-адрес из MySQL, который я отображаю в качестве привязки HREF, URL-адрес ниже, который выдает URL 404, не может быть найден.

 http://localhost/Users/MyUserName/Sites/TM470/FileServer/EmployeeCorrespondence/drawing.pdf
 

Если я затем удалю часть /Users/MyUserName/Сайты, URL-адрес будет работать нормально.

Я явно чего-то здесь не понимаю, но не уверен, чего именно?

В конфигурации http.d для корневого каталога моего сервера установлено значение DocumentRoot «/Users/MyUserName/Сайты/». В этом ли заключается проблема? Должен ли я начать с местоположения сайта?

Комментарии:

1. Да, ваш URL-адрес должен быть относительно корня документа (на самом деле, более конкретно, он должен быть относительно страницы, на которой вы показываете ссылку). Он никогда не должен включать корень, так как это путь на диске, а не URL-адрес, который будет обслуживать веб-сервер.

2. P.S. Внимание: Ваш код уязвим для атак с использованием SQL — инъекций. Вы должны использовать параметризованные запросы и подготовленные инструкции, чтобы предотвратить компрометацию вашей базы данных злоумышленниками с помощью вредоносных входных значений. bobby-tables.com дает объяснение рисков, а также некоторые примеры того, как безопасно писать ваши запросы с помощью PHP / mysqli. Никогда не вставляйте необработанные данные непосредственно в свой SQL. Судя по тому, как сейчас написан ваш код, кто-то может легко украсть, неправильно изменить или даже удалить ваши данные.

3. Брилл предположил, что именно это и происходит, и да начнет проверять код, я всегда начинаю с того, чтобы сначала заставить его работать правильно. Также это проект и никогда не будет в живой системе, однако, поскольку мне нужно обеспечить целостность и безопасность, будет большой раздел обзора.

4. Просто из любопытства, при использовании Move_file_upload я не могу указать относительный путь только абсолютный, как мне обойти эту проблему?

5. вы имеете в виду move_uploaded_file? Вы не можете, это сохраняется на диске, поэтому ему нужен абсолютный путь к файловой системе. Это не то же самое, что URL-адрес, необходимый браузеру для доступа к изображению через веб-сервер. Не путай в голове URL-адреса и пути к файловой системе. В некоторых случаях они могут в какой-то степени соотноситься друг с другом, но не всегда. В любом случае используйте полный путь к файловой системе для сохранения и относительный путь для создания ссылки на вашей веб-странице.