Предоставить доступ к файлу вне папки www / html

У меня есть сервер LAMP

Версия сервера: Apache / 2.4.29 (Ubuntu)

PHP: PHP 7.2.5-0ubuntu0.18.04.1

Мне нужно предоставить доступ php SQLITE3 к базе данных за пределами папки www / html. Сейчас моя файловая система выглядит так.

/root
    ./database
        user.db
/var
    ./www
        ./html
            index.html
            reg.php

user.db должен находиться в / root / database, поэтому просто поместить его в var / www / html для меня не решение.

Поэтому мне нужно предоставить доступ к этой папке для Apache или php. Я нашел некоторую информацию здесь https://httpd.apache.org/docs/2.4/urlmapping.html, но не понял, как это работает и где мне это нужно поместить?

Я бы просто создал символическую ссылку с /root/database/ на ваш каталог var/www/html.

fyroc 19.06.2018 06:10

@fyroc Я сделал символическую ссылку, но ничего не произошло. Однако это выглядит прогрессивно. Когда я набираю в браузере example.com/db/helloworld.html, он распознает, что этот URL существует, но отвечаю с кодом HTTP 403 Forbidden You don't have permission to access /db/helloworld.html on this server. Apache/2.4.29 (Ubuntu) Server at examle.com Port 80 Как я могу предоставить к нему доступ?

Nikita Cunskis 19.06.2018 07:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
2 914
1

Ответы 1

Проблема здесь в разрешениях Linux, а не в отображении URL-адресов, поскольку PHP работает на сервере в бэкэнде.

Если вы запустите PHP как модуль Apache (mod_php или что-то в этом роде), он будет работать с пользователем и группой Apache (обычно www-data:www-data или nobody:nogroup, это зависит от конфигурации LAMP).

Итак, вы должны предоставить разрешения и изменить владельца файла user.db и его дерева, например:

chmod o+x /root
chmod o+x /root/database
chown www-data:www-data /root/database/user.db 

Вы можете узнать больше о разрешениях здесь.

будет ли другое приложение, запущенное пользователем root, также будет иметь доступ к БД после этого действия?

Nikita Cunskis 19.06.2018 07:12

Root имеют доступ ко всему :-) Проблема с другими пользователями.

drmad 19.06.2018 18:01

Как его изменить, если другой пользователь «daq» (из группы daq_group) был владельцем «/root/database/user.db»? Как мы можем предоставить доступ к «www-данным», не меняя первоначального владельца? Добавление «daq» в группу «www-data» и создание группы «www-data» в качестве владельца каталога по-прежнему не работает! @drmad

quanta 09.04.2020 12:08

Другие вопросы по теме