代码之家  ›  专栏  ›  技术社区  ›  James Skidmore

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

  •  1
  • James Skidmore  · 技术社区  · 16 年前

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

    1 回复  |  直到 16 年前
        1
  •  1
  •   sjobe    16 年前

    Symfony Documentation ,在每个应用的config.php中执行此操作应该有效[示例显示app s/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[如果backend是您的默认环境,则可能是index.php]复制到/web/backend,并且在这些文件中的每一个文件中,更改

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

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

    你应该表现得很好。我喜欢这个方法,但是如果您没有虚拟主机设置,您可能没有这个选项。

    推荐文章