我在我公司的服务器上运行了一个symfony2项目(Debian用于生产,Ubuntu用于开发)。我们想在同一台服务器上托管另一个symfony2网站,我们希望将两个项目分开,因为它们彼此不相关并使用不同的CSS样式。
我已经定义了两个虚拟主机,其子域指向每个项目的文件夹,但我不能让两个站点一起运行。它只运行我在浏览器中加载的第一个,第二个显示此错误: ClassNotFoundException:尝试从/var/www/promociones/app/AppKernel.php第19行的命名空间“RecAicrag \ PromocionesBundle”加载类“RecAicragPromocionesBundle”。您是否需要从另一个命名空间“使用”它?
我首先加载哪一个并不重要,第二个显示错误。我认为在某处有共享配置,但我找不到如何解决它。而且我也找不到任何如何在同一主机中托管两个项目的例子。
如果我可以有两种不同的配置和CSS样式,我可以考虑将两个站点保留在同一个项目中,但我更愿意将它们保存在不同的位置。
我的apache conf:
<VirtualHost *:80>
ServerAdmin carlos@xxx.com
ServerName localhost
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerAdmin carlos@xxx.com
ServerName intranet.localhost
DocumentRoot /var/www/intranet/web/
<Directory /var/www/intranet/web/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName promociones.localhost
ServerAdmin carlos@xxx.com
DocumentRoot /var/www/promociones/web/
<Directory /var/www/promociones/web/>
RewriteEngine On
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
第一个项目: 应用程序/配置/ routing.yml中
xxx_intranet:
resource: "@XxxIntranetBundle/Resources/config/routing.yml"
prefix: /
的src /.../资源/配置/ routing.yml中
intranet_consultas:
pattern: /consultas
defaults: { _controller: XxxIntranetBundle:Generico\Consultas:index }
intranet_consulta_articulo:
pattern: /consultas/articulo/{codigo}
defaults: { _controller: XxxIntranetBundle:Generico\Consultas:articulo }
......
xxx_intranet_Annotations:
resource: "@XxxIntranetBundle/Controller/"
prefix: /
type: annotation
第二(新): 应用程序/配置/ routing.yml中
rec_xxx_promociones:
resource: "@RecXxxPromocionesBundle/Resources/config/routing.yml"
prefix: /
的src /.../资源/配置/ routing.yml中
rec_xxx_promociones_homepage:
pattern: /hello/{name}
defaults: { _controller: RecXxxPromocionesBundle:Default:index }
我尝试在routing.yml中设置“host”参数,但没有任何反应,仍然是相同的。
答案 0 :(得分:2)
您的服务器上是否启用了APC?
如果你这样做,这可能就是问题所在。 Symfony在APC中存储类缓存,默认情况下具有相同的密钥名称。
这意味着重新启动Apache后访问的第一个应用程序是填充类高速缓存的应用程序。然后第二个应用程序将尝试使用相同的类缓存,并且会非常可怕地破坏。
您应该能够将类缓存名称更改为特定于应用程序 - 我相信它位于app / autoload.php中 - 这应该可以解决您的问题。如果没有,那么回帖:)