В чем преимущество каталога пабов в Magento 2

11

Может быть, я просто не получаю его, но если мои файлы уже кэшированы, то какой смысл использовать каталог pub в Magento 2? Мое единственное обоснованное предположение заключается в том, что использование резервного механизма можно несколько облегчить, если иметь известный набор файлов для темы.

Читая документы, я не могу четко понять преимущества, хотя чувствую, что хорошо разбираюсь в динамических, статических и кэшированных файлах.

Насколько я понимаю, кеш - это просто определенное известное расположение ресурсов, из-за чего я предположил, что каталог pub - это механизм, который стандартизирует расположение файлов для сокращения ресурсов, используемых механизмом резервирования.

Брайан Эллис
источник
большой вопрос, интересно, единственное преимущество - безопасность, или это также улучшает скорость
Клавдиу Крянгэ,

Ответы:

15

Каталог pub - это мера безопасности, позволяющая заблокировать публичный доступ к ресурсам корневого каталога, а именно к каталогу приложения. Предполагается, что причина, по которой index.php также находится в корневом каталоге, предназначена для лиц, чей веб-хостинг затрудняет или делает невозможным изменение вашего корня.

При использовании pub / index.php к исходной папке приложения будет невозможно получить доступ, хотя это может быть так, если index.php запускался из корневого каталога. Эта практика также замечена в Symfony и Zend 2.

Таким образом, ни одна из конфигураций приложений Magento, шаблонов и т. Д. Не предоставляется.

Как правило, знание архитектуры в отношении pub index.php vs root index.php не требуется для разработчиков внешнего интерфейса в команде, но понимание его основ полезно знать.

Брайан Эллис
источник
вам нужно добавить document_root_is_pub = trueсвой, ./app/etc/env.phpесли ваш корень /pub/- github.com/magento/magento2/pull/9094
Алекс Гусев
10

Magento 2 поставляется с двумя файлами index.php, где один файл находится в корневой папке, а другой - в папке / pub. Magento 2 предлагает запустить ваше приложение, используя любой из этих файлов. Если вы решите запустить свое приложение, используя /pub/index.php, тогда это хорошее решение с точки зрения безопасности, поскольку оно ограничивает несанкционированный прямой доступ к файлам приложения.

В качестве примечания следует помнить, что /index.phpфайл используется при работе в режиме разработчика и /pub/index.phpпри работе в рабочем режиме.

Рафаэль в цифровом пианизме
источник
1
Я хотел бы отметить, что существует 2 файла index.php, но что касается преимуществ и использования реализации с использованием этой архитектуры типов, ни один из них не был рассмотрен. Если я не пропущу больше в теме, я пошел дальше и ответил на вопрос, просматривая статьи и документы Alan Storm, Zend и Symfony.
Брайан Эллис
Что касается вашего последнего утверждения о dev / prod, можете ли вы подтвердить, где это сделано? Я не вижу ничего подобного
Клаудиу Крянгэ
Я с @brianellis, почему так должно быть? Судя по всему, это не обманывает браузер.
ladle3000