Как установить DOCUMENT_ROOT, и сайт базируются в моем локальном PHP dev установка?

Вы очень близки! Чтобы переопределить существующий компонент Broadleaf, обязательно используйте имя компонента, объявленное в аннотации. Назовите свой bean-компонент "blAdminBasicEntityController" следующим образом:

@Bean
public AdminBasicEntityController blAdminBasicEntityController() {
    return new AdminArticleController();
}

Ошибка, которую вы видите, происходит из-за наличия двух бинов с одинаковым отображением. Это происходит потому, что AdminBasicEntityController помечен @Controller("blAdminBasicEntityController"), что означает, что он будет выбран при сканировании компонента и создаст компонент с именем blAdminBasicEntityController. Поскольку AdminArticleController расширяет AdminBasicEntityController, после создания компонента AdminArticleController будет 2 сопоставления для каждого сопоставления в AdminBasicEntityController. Решение состоит в том, чтобы переопределить компонент Broadleaf вместо добавления дополнительного.

13
задан 25 April 2009 в 22:12
поделиться

5 ответов

Я бы порекомендовал vhosts, чтобы вы могли обслуживать «чужой сайт» локально, не связываясь с вашим веб-сервером по умолчанию.

  • localhost -> ваша стартовая страница или любой другой сайт
  • alien.localhost -> клиентов, независимо от того, какой путь / корень документа вы хотите.
  • x.localhost -> другой сайт

В глобальном конфигурационном файле apache или в комплекте vhost.conf;

NameVirtualHost localhost:80
# the mysql tool's url
<VirtualHost phpmyadmin.localhost:80>
# and absolute path
DocumentRoot "/srv/www/phpMyAdmin/"
</VirtualHost>

#Same for the Client Site
<VirtualHost foo.localhost:80>
DocumentRoot "/path/to/desired/webroot/"
</VirtualHost>

Вы можете управлять разрешениями и устанавливать общий глобальный сайт, указав сначала первое

в конфигурации глобального сервера apache

DocumentRoot "/srv/www/htdocs"
#
# Configure the DocumentRoot Properties
#
<Directory "/srv/www/htdocs"> 
    Options All
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    AllowOverride All
    # Controls who can get stuff from this server.
    Order allow,deny
    Allow from all
</Directory>
#
# Configure Sub-Domain Properties. This prevents those nasty 403 errors
#

# mysql administration tool
<Directory "/srv/www/phpMyAdmin/">
    Options Indexes MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

# a client web site built with CakePHP
<Directory "/home/eddie/workspace/Digital_Business/app/webroot/">
    Options All
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
6
ответ дан 1 December 2019 в 23:48
поделиться

Это настройка для конкретного сервера. Если вы используете Apache, все, что вам нужно сделать, это отредактировать файл httpd.conf (в системе на основе Unix он должен быть либо в / etc / apache2 / httpd. conf или /etc/httpd/httpd.conf , в зависимости от того, какая у вас версия Apache). В файле должна быть строка, которая выглядит следующим образом:

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/whatever/your/document/root/is"

Технически, способ Илая также работает, но я не думаю, что редактирование серверных переменных - это вообще хорошая идея.

2
ответ дан 1 December 2019 в 23:48
поделиться

Для текущего процесса вы можете просто сделать

$ _ SERVER ["document_root"] = "что угодно" ;

Будьте осторожны, хотя.

1
ответ дан 1 December 2019 в 23:48
поделиться

Может быть, вы найдете следующий сайт полезным. Существуют простые учебные пособия, которые показывают вам, какими настройками нужно манипулировать, чтобы настроить это и удовлетворить вас. Я нашел там много объяснений.

Учебное пособие Тангуая

0
ответ дан 1 December 2019 в 23:48
поделиться

@ Ответ Эдди мне очень помог, но мне все же пришлось провести небольшое дополнительное исследование, чтобы решить ту же проблему для себя, используя XAMPP на OSX. Я думал, что добавлю сюда свое полное решение для блага потомков.

Сначала я добавил следующие записи в httpd-vhosts.conf (в папке "etc / extra /" в XAMPP):

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot "/Applications/xampp/xamppfiles/htdocs/"
</VirtualHost>
<VirtualHost *:80>
    ServerName client1.my-machine
    DocumentRoot "/Applications/xampp/xamppfiles/htdocs/clients/client1/"
</VirtualHost>
<VirtualHost *:80>
    ServerName client2.my-machine
    DocumentRoot "/Applications/xampp/xamppfiles/htdocs/clients/client2/"
</VirtualHost>

Обратите внимание, что я специально использовал подстановочный знак вместо «localhost» для URL-адресов VirtualHost и добавил конфигурацию ServerName, в которой я указал имя каждого поддомена. Также обратите внимание, что я использовал имя моей машины («my-machine») вместо «localhost» - таким образом все запросы с любой машины (не только localhost) могут быть правильно оценены. Я занимаюсь разработкой в ​​OSX, но тестирую браузеры на различных виртуальных машинах через Parallels. Используя этот подход, я могу получить доступ к http: // client1. my-machine с любой машины или виртуальной машины в моей сети. С указанием "localhost" он будет работать только на моей машине разработки.

ПРИМЕЧАНИЕ : первая запись VirtualHost используется по умолчанию (как объяснено здесь: http://httpd.apache.org/docs /2.2/vhosts/name-based.html) и требуется, чтобы запросы не отправлялись по умолчанию на один из настраиваемых сайтов.

Я также добавил настройки разрешений в httpd.conf, как показано в @ Ответ Эдди . Это не всегда требуется, но я столкнулся с двумя отдельными случаями, когда мне нужно было внести это изменение:

  • Создание нового сайта в каталоге за пределами корневого каталога http XAMPP по умолчанию (в основном любой путь, который будет доступен через http, должен иметь явный набор разрешений)
  • Добавление правил mod_rewrite для сайта, настроенного как виртуальный хост (по пути http по умолчанию), Я получал сообщение об ошибке «.htaccess: RewriteEngine not allowed here». Чтение комментариев в httpd.conf о параметре AllowOverride делает причину ошибки очевидной, но я упустил это из виду раньше. Изменение этого параметра на «Все» устранило ошибку.

Обратите внимание, что при редактировании httpd.conf вам может потребоваться раскомментировать следующую строку (она была закомментирована для меня по умолчанию), иначе изменение vhosts, сделанное выше, не вступит в силу :

# Virtual hosts
Include /Applications/xampp/etc/extra/httpd-vhosts.conf

Наконец, мне также пришлось добавить собственные доменные имена в мой файл hosts, как указано в комментариях выше. В OSX вы делаете это, редактируя «/ private / etc / hosts» (в Windows это будет «Windows / System32 / drivers / etc / hosts») и добавляя следующие строки:

127.0.0.1   my-machine
127.0.0.1   client1.my-machine
127.0.0.1   client2.my-machine

ПРИМЕЧАНИЕ : в пользовательский интерфейс OSX Finder по умолчанию, скрытые папки (включая / private) не отображаются. Вы можете изменить это навсегда, взломав внутренние параметры Finder (подробности в Google), или, что проще, время от времени вносить изменения, просто используйте опцию меню «Перейти> Перейти в папку», которая позволит вам открывать скрытые папки напрямую по имени. Лично я использую стороннюю оболочку OSX под названием PathFinder , которую я всем сердцем рекомендую (она стоит небольшого лицензионного сбора). Он включает в себя пункт меню для скрытия / отображения скрытых файлов, среди многих других полезных функций.

Одна вещь, которая мешает, заключается в том, что мне также пришлось добавить совпадающие записи в моем файле хостов Windows VM, указывающие на мою физическую машину разработчика, чтобы URL-адреса будут разрешаться через Apache / OSX:

192.168.1.5 client1.my-machine
192.168.1.5 client2.my-machine

Мне не нужна запись только для имени машины (которая разрешается автоматически), но добавление субдомена к нему не разрешается правильно без этих записей хоста. Это отстой, что иногда мой IP-адрес Mac изменяется (через DHCP), но это небольшая неприятность. Я бы предположил, что могу настроить его так, чтобы эти IP-адреса не нужны, но я не мог понять этого и готов двигаться дальше :) (Если кто-то знает ответ, оставьте комментарий)

Теперь у меня есть несколько клиентских сайтов работает в одном месте и доступен из всех моих сред разработки / тестирования. Надеюсь, это поможет кому-то другому.

8
ответ дан 1 December 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: