/var/www/ структура папок для PHP-проекта
Вопрос
Я использую MAMP только для своей среды разработки и на самом деле не понял структуру папок /var / www/project-name / на веб-сервере.Мне интересно, должны ли вы указывать веб-серверу на папку htdocs или она должна указывать на корень папки проекта?
Причина, по которой я спрашиваю, заключается в том, что библиотеки предназначены для существования вне папки htdocs в целях безопасности, но как на них указывают из самого веб-приложения?Конечно, веб-приложение не может получить доступ к папкам за пределами папки htdocs, если веб-сервер указывает на папку htdocs для веб-приложения?
Решение
Простое решение состоит в том, чтобы иметь структуру папок следующим образом:
/var/www/project-name/
+ webroot/
+ libraries/
Укажите свой apache2 DocumentRoot
к тому webroot
справочник.Храните все библиотеки, к которым вы не хотите, чтобы они были доступны из Интернета, в libraries
справочник.В вашем php-коде используйте директиву include для доступа к коду библиотек.
Хитрость заключается в том, чтобы понять, что php может включать любой файл в вашей системе, к которому у него есть доступ на чтение.Пользователь, просматривающий ваш веб-сайт, может получить доступ только к файлам внутри вашего каталога webroot.
Другие советы
Если у вас есть несколько vhosts на одном сервере, довольно часто каждый сайт находится в каталоге под /var/www
, и у каждого из них есть htdocs
папка, которая монтируется как веб-корень.Затем вы можете хранить журналы и библиотеки, относящиеся к конкретному приложению, в папке над веб-корнем.Например.:
/var/www/lolcats.com
/var/www/lolcats.com/htdocs
/var/www/lolcats.com/htdocs/index.php
/var/www/lolcats.com/lib
/var/www/lolcats.com/log
PHP может получить доступ к любому файлу в файловой системе, для которого пользователь сервера apache имеет правильные разрешения.На Linux-сервере, работающем под управлением apache без виртуальных хостов, /var/www является обычным местом для вашего каталога htdocs.
Вы размещаете библиотеки в PHP include_path
который недоступен обычному пользователю.
Хорошая идея - отобразить ваши локальные веб-сайты в каталогах таким же образом, как работают ваши домены.
Часто у вас есть несколько веб-сайтов в одной учетной записи веб-хостинга, поэтому настройте виртуальные хостинги таким образом, чтобы они отражали настройки.
Если ваш общий хостинг:
/var/www/root
/var/www/root/website1
/var/www/root/website2
/var/www/root/website3
Создайте 3 отдельных хоста на вашем локальном компьютере, но сохраните идентичную файловую структуру.
Кроме того, используйте условия в ваших конфигурационных файлах для настройки сайта по-разному в зависимости от файловой структуры сервера, чтобы гарантировать, что один и тот же конфигурационный файл работает в обеих настройках.Это означает, что вы сохраняете свой одноэтапный процесс сборки.