同一主机中多个symfony2项目上的ClassNotFoundException

同一主机中多个symfony2项目上的ClassNotFoundException,symfony,virtualhost,Symfony,Virtualhost,我有一个symfony2项目在我公司的服务器上运行(Debian用于生产,Ubuntu用于开发)。我们希望在同一台服务器上托管另一个symfony2网站,我们希望将两个项目分开,因为它们彼此不相关,并且使用不同的CSS样式 我已经定义了两个虚拟主机,它们的子域指向每个项目的文件夹,但我不能让这两个站点同时运行。它只运行我在浏览器中加载的第一个,第二个显示此错误: ClassNotFoundException:试图从/var/www/promociones/app/AppKernel.php第19

我有一个symfony2项目在我公司的服务器上运行(Debian用于生产,Ubuntu用于开发)。我们希望在同一台服务器上托管另一个symfony2网站,我们希望将两个项目分开,因为它们彼此不相关,并且使用不同的CSS样式

我已经定义了两个虚拟主机,它们的子域指向每个项目的文件夹,但我不能让这两个站点同时运行。它只运行我在浏览器中加载的第一个,第二个显示此错误: ClassNotFoundException:试图从/var/www/promociones/app/AppKernel.php第19行中的命名空间“RecAicrag\PromocionesBundle”加载类“RecAicragPromocionesBundle”。是否需要从另一个命名空间“使用”它

不管我先加载哪一个,第二个显示错误。我认为某个地方有一个共享配置,但我找不到如何解决它。。我也找不到如何在同一主机中托管两个项目的任何示例

如果我可以有两种不同的配置和CSS样式,我可以考虑将两个站点保持在同一个项目中,但我希望把它们放在不同的地方。

我的apache配置:

<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>
src/../Resources/config/routing.yml

xxx_intranet:
    resource: "@XxxIntranetBundle/Resources/config/routing.yml"
    prefix:   /
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
rec_xxx_promociones:
    resource: "@RecXxxPromocionesBundle/Resources/config/routing.yml"
    prefix:   /
rec_xxx_promociones_homepage:
    pattern:  /hello/{name}
    defaults: { _controller: RecXxxPromocionesBundle:Default:index }
第二(新): app/config/routing.yml

xxx_intranet:
    resource: "@XxxIntranetBundle/Resources/config/routing.yml"
    prefix:   /
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
rec_xxx_promociones:
    resource: "@RecXxxPromocionesBundle/Resources/config/routing.yml"
    prefix:   /
rec_xxx_promociones_homepage:
    pattern:  /hello/{name}
    defaults: { _controller: RecXxxPromocionesBundle:Default:index }
src/../Resources/config/routing.yml

xxx_intranet:
    resource: "@XxxIntranetBundle/Resources/config/routing.yml"
    prefix:   /
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
rec_xxx_promociones:
    resource: "@RecXxxPromocionesBundle/Resources/config/routing.yml"
    prefix:   /
rec_xxx_promociones_homepage:
    pattern:  /hello/{name}
    defaults: { _controller: RecXxxPromocionesBundle:Default:index }

我尝试在routing.yml中设置“host”参数,但没有发生任何变化,仍然是一样的。

您的服务器上是否启用了APC

如果你这样做,这可能就是问题所在。Symfony在APC中存储一个类缓存,默认情况下,该类缓存具有相同的密钥名

这意味着您在重启Apache后访问的第一个应用程序是填充类缓存的应用程序。然后,第二个应用程序将尝试使用相同的类缓存,并且将非常糟糕地中断


您应该能够将类缓存名称更改为特定于应用程序的名称—我相信它位于app/autoload.php中—这应该可以解决您的问题。如果没有,那么回发:)

routing.yml中显示路由
我在第一个项目中添加了一些路由。有很多,都有相同的格式。第二个项目还没有任何路线,只有默认路线我使用的是Xcache而不是APC,但你让我朝着正确的方向看。我替换了Xcache,现在在两个app.php文件中使用了前缀不同的APC。现在我可以浏览这两个网站了!非常感谢。