Структура для приложения MVC PHP - PullRequest
2 голосов
/ 06 августа 2011

В настоящее время я разрабатываю php-приложение с использованием методов MVC.Я начал его, не задумываясь о полезной структуре каталогов.
Я планирую развернуть приложение на сервере apache2.Вот как это выглядит прямо сейчас.
My current layout

У меня есть папка httpdocs на сервере, которая доступна из Интернета.Если я скопирую все файлы в этот каталог, некоторые файлы могут быть доступны, чего не должно быть.Папка public содержит файлы, которые должны быть доступны.(Мне может понадобиться поместить туда свой index.php)

Мой вопрос: какой макет предпочтителен для такого приложения?Должен ли я поместить все папки, кроме public, в родительскую папку httpdocs?

Спасибо за советы!

Ответы [ 3 ]

2 голосов
/ 06 августа 2011

Самое простое решение будет похоже на то, что делает CakePHP, и у вас будет index.php в вашем каталоге public, а затем просто файлы .htaccess, которые сопоставляют все запросы с этим файлом index.php.

Таким образом, в вашем корневом каталоге у вас будет что-то вроде:

RewriteEngine on
RewriteRule ^(.+) /public/index.php/$1 [L,NC]

И затем аналогично в вашем public каталоге:

RewriteEngine on
RewriteRule ^(.+) index.php/$1 [L,NC]

Ваши PHP-скрипты все равно будут иметь доступдругие скрипты, как обычно, работают в файловой системе, а не через, скажем, HTTP.

2 голосов
/ 06 августа 2011

http://httpd.apache.org/docs/2.1/vhosts/examples.html

Вы можете посмотреть там.Настройка виртуального хоста всегда хороша, поэтому вы не должны смешивать ваше приложениеИ вы просто даете доступ к своей общей папке.

<VirtualHost *:80>
DocumentRoot /var/www/mvc_app/public
ServerName www.example.com

<Directory /var/www/mvc_app/public>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

</VirtualHost>
1 голос
/ 06 августа 2011

Использовать публичный каталог как httpdocs. Корень сети указывает на общедоступный, как это:

<VirtualHost *:80>
DocumentRoot /path/to/public
ServerName www.domain.com
...
</VirtualHost>

Если у вас нет доступа к конфигурации apache, вы можете просто использовать «httpdocs» в качестве публичного каталога. Вы перемещаете все из открытого в httpdocs и оставляете остальную часть приложения вне httpdocs. Имя публичного каталога не должно иметь значения, если вы знаете путь к ресурсам («mydomain.com/javascripts/foo.js»).

...