У меня есть сервер 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, но не понял, как это работает и где мне это нужно поместить?
@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 Как я могу предоставить к нему доступ?






Проблема здесь в разрешениях 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, также будет иметь доступ к БД после этого действия?
Root имеют доступ ко всему :-) Проблема с другими пользователями.
Как его изменить, если другой пользователь «daq» (из группы daq_group) был владельцем «/root/database/user.db»? Как мы можем предоставить доступ к «www-данным», не меняя первоначального владельца? Добавление «daq» в группу «www-data» и создание группы «www-data» в качестве владельца каталога по-прежнему не работает! @drmad
Я бы просто создал символическую ссылку с
/root/database/на ваш каталогvar/www/html.