В настоящее время у меня есть сервер под управлением Ubuntu 18.04 с Apache2. Я не могу получить доступ к файлам png и svg в подкаталогах. Пример: /var/www/html/icons/new.svg, если страница расположена в /var/www/html/index.php. Однако Apache будет доставлять изображения из каталога страниц, поэтому будут доставлены все фотографии в / var / www / html.
Код ошибки для изображений - просто 404. Я могу получить доступ к страницам в /var/www/html/sub/index.php. Если это важно, все изображения используют относительные ссылки.
У меня есть неподтвержденный ssl на моем сервере, но даже на простом http он не доставляется, если это имеет значение.
Вероятно, это глупый вопрос, но в любом случае спасибо за уделенное время.
Весь код работал на локальном сервере Wamp, прежде чем быть помещенным на сервер лампы.
Пример кода:
<img src = "icons/new.svg"> <!--Wont work-->
<img src = "logo.svg"> <!--Will Work-->
Внутри / var / www / html
drwxr-xr-x 6 root root 4096 Jun 26 18:04 .
drwxr-xr-x 3 root root 4096 Jun 22 18:55 ..
drwxr-xr-x 4 root root 4096 Jun 26 17:50 icons
-rw-r--r-- 1 root root 4340 Jun 26 18:11 index.php
-rw-r--r-- 1 root root 4172 Jun 26 18:11 logo.svg
-rw-r--r-- 1 root root 1856 Jun 26 18:11 mainstyle.css
drwxr-xr-x 2 root root 4096 Jun 26 17:50 PHP
drwxr-xr-x 2 root root 4096 Jun 26 17:50 plandetails
drwxr-xr-x 2 root root 4096 Jun 26 17:50 planicons
-rw-r--r-- 1 root root 295915 Jun 26 18:11 searchbkg.jpg
-rw-r--r-- 1 root root 7366 Jun 26 18:11 searchbkg.svg
Внутри папки значков
drwxr-xr-x 4 root root 4096 Jun 26 17:50 .
drwxr-xr-x 6 root root 4096 Jun 26 18:04 ..
-rw-r--r-- 1 root root 446 Jun 26 18:37 arrowleft.svg
-rw-r--r-- 1 root root 446 Jun 26 18:37 arrowrt.svg
-rw-r--r-- 1 root root 7863 Jun 26 18:37 bestoffer.svg
-rw-r--r-- 1 root root 4024 Jun 26 18:37 free.svg
-rw-r--r-- 1 root root 477 Jun 26 18:37 informationbubble.svg
-rw-r--r-- 1 root root 3404 Jun 26 18:37 new.svg
drwxr-xr-x 2 root root 4096 Jun 26 17:50 plans
drwxr-xr-x 2 root root 4096 Jun 26 17:50 prices
-rw-r--r-- 1 root root 2272 Jun 26 18:37 save.svg
Обновлен / var / www / html perms
drwxr-xr-x 6 root root 4096 Jun 26 18:04 .
drwxr-xr-x 3 root root 4096 Jun 22 18:55 ..
drwxr-xr-x 4 root root 4096 Jun 26 17:50 icons
-rw-r--r-- 1 root root 4340 Jun 26 18:37 index.php
-rw-r--r-- 1 root root 4172 Jun 26 18:37 logo.svg
-rw-r--r-- 1 root root 1856 Jun 26 18:37 mainstyle.css
drwxr-xr-x 2 root root 4096 Jun 26 17:50 PHP
drwxr-xr-x 2 root root 4096 Jun 26 17:50 plandetails
drwxr-xr-x 2 root root 4096 Jun 26 17:50 planicons
-rw-r--r-- 1 root root 295915 Jun 26 18:37 searchbkg.jpg
-rw-r--r-- 1 root root 7366 Jun 26 18:37 searchbkg.svg
Для всех, кому интересно, я использовал комбинацию справки ниже и это
Я добавил это.
что выводит ls -la /var/www/html?
Добавил его в раздел кода. Кроме того, все ссылки в элементе inspect, похоже, указывают на то, где находятся файлы.
могу ли я увидеть внутреннюю часть папки значков?
Конечно, я тоже его добавил.
хорошо, перейдите на свой URL-адрес localhost/your_site/icons, вы получаете ошибку 404?
У меня ошибка 403 сейчас
это значит, что с папкой все в порядке. но запрещено. теперь перейдите к localhost/your_site/icons/new.svg
если он говорит 403, выполните эти две команды find /var/www/html -type d -print0 | xargs -0 chmod 0755 find / var / www / html -type f -print0 | xargs -0 chmod 0644`
Посмотрите свои лог-файлы Apache, они покажут, что не так.
Я предлагаю вам проверить, не является ли это проблемой с разрешением, запустив chmod -R 0777 var/www/html. Если ваш сайт работает, значит, у вас есть проблема с разрешениями для ваших файлов / каталогов, если нет, то ваша проблема в другом месте.
Да, после этого все еще не работало.


Это не вопрос php, это вопрос apache и вопрос разрешений, попробуйте:
chmod a+rx /var/www/html/sub/
а также
chmod a+r /var/www/html/*
Обновлено:
Ваш виртуальный хост должен быть:
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
Я пробовал это и теперь не могу получить доступ к /var/www/html/index.php. У вас нет разрешения на доступ к / на этом сервере.
Это потому, что у вас нет разрешений на доступ к этому файлу, отправьте вывод ls -la
Я заставил индексную страницу работать, настроив apache <Directory />, чтобы все, кроме изображений, по-прежнему не доставлялись человеку, просматривающему веб-страницу. Я добавил код в сообщение, потому что здесь он плохо отформатирован.
вы добавили новый каталог для приложения "sub" в httpd.conf?
Не специально, но это должно быть в / var / www /, так как есть несколько папок, таких как / var / www / html / PHP и / var / www / html / icons.
так же, как сказал bassxzero, это проблема пути, проверьте путь DocumentRoot, он должен быть / var / www / html, а каталог также должен быть установлен / var / www / html
Да, они оба.
как насчет журнала apache?, если вы обращаетесь, вы все равно получаете ошибку 403?
У меня есть пара мыслей. Вы создали файл .conf для приложения? Включили ли вы сайт? или вы обрабатываете подпапку и часть дерева приложений для извлечения ресурсов? Если да, значит, папки имеют правильные разрешения для ПОЛЬЗОВАТЕЛЯ и для ГРУППЫ?
Я считаю, что ошибка возникает, когда я пытался получить доступ к / var / www / html / icons /. И, по-видимому, он пытается обслуживать / user / share / apache2 / icons /, когда это должно быть / var / www / html / icons /. Но он также говорит, что нет соответствующего DirectoryIndex, потому что в папке значков нет страницы для загрузки, только .svgs
Да, я просто пытаюсь получить файлы .svg из подкаталога, там нет файлов .php для загрузки.
Это ваши настройки VirtualHost, он ищет корневую папку apache вместо веб-папки. добавьте это в .htaccess AddType image/svg+xml svg svgzAddEncoding gzip svgz
Посмотрим код. У меня такое чувство, что это проблема пути.