如何在symfony中为每个应用程序创建单独的Web目录?

时间:2009-06-26 05:22:58

标签: php symfony1

例如,我有两个应用程序:'frontend'和'backend'。我想设置我的/ web目录,以便'/ web / frontend'服务'前端'资产,'/ web / backend'服务'后端'资产,而不必修改所有图像路径,等

1 个答案:

答案 0 :(得分:1)

Symfony Documentation开始,在每个应用程序的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中的web目录的所有变量。要查看所有变量的列表,请尝试

<?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,如果后端是你的默认环境]复制到/ web / backend,并在每个文件中更改

define('SF_ROOT_DIR',    realpath(dirname(__FILE__).'/..'));

define('SF_ROOT_DIR',    realpath(dirname(__FILE__).'/../..'));

你应该好。我更喜欢这种方法,但是如果您没有设置虚拟主机,则可能没有此选项。