Из документации Symfony , выполнение этого в config.php каждого приложения должно работать [пример показывает apps / backend / config / config.php]
sfConfig::add(array(
'sf_web_dir' => SF_ROOT_DIR.'/web/backend',
'sf_upload_dir' => SF_ROOT_DIR.'/web/backend'.sfConfig::get('sf_upload_dir_name'),
));
По какой-то причине этот метод не работает. Если вы посмотрите на все переменные, определенные внутри sfConfig, вы заметите, что вам нужно изменить больше, чем sf_web_dir и sf_upload_dir, чтобы все заработало.
Одним из вариантов будет ручное переопределение всех переменных внутри sfConfig, которые указывают на веб-каталог внутри config.php каждого приложения. Чтобы увидеть список всех переменных, попробуйте
<?php echo var_dump(sfConfig::getall()); ?>
Ваш другой вариант (способ, которым я делал это раньше) - сделать это в конфигурации Apache. Настройки вашего виртуального хоста для бэкэнда будут выглядеть примерно так:
<VirtualHost *>
ServerName backend.dev
DocumentRoot "PATH_TO_SYMFONY_PROJECT/web/backend"
DirectoryIndex index.php
Alias /sf /usr/local/lib/php/data/symfony/web/sf
<Directory "/usr/local/lib/php/data/symfony/web/sf">
AllowOverride All
Allow from All
</Directory>
<Directory "PATH_TO_SYMFONY_PROJECT/web/backend">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
Затем вам нужно будет скопировать backend.php, backend_dev.php [и, возможно, index.php, если backend является вашей средой по умолчанию] в / web / backend, и в каждом из этих файлов измените
define('SF_ROOT_DIR', realpath(dirname(__FILE__).'/..'));
до
define('SF_ROOT_DIR', realpath(dirname(__FILE__).'/../..'));
и тебе должно быть хорошо. Я предпочитаю этот метод, но если у вас нет настроенных виртуальных хостов, у вас может не быть этой опции.