例如,我有两个应用程序:“前端”和“后端”。我希望设置我的 /web 目录,以便“/web/frontend”为“前端”资产提供服务,而“/web/backend”为“后端”资产提供服务,而无需修改所有图像路径,等等
问问题
496 次
1 回答
1
从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 中的 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__).'/../..'));
你应该很好。我更喜欢这种方法,但如果你没有设置虚拟主机,你可能没有这个选项。
于 2009-06-26T13:24:52.740 回答