Php 如何使用apache2在localhost中部署symfony2应用程序

Php 如何使用apache2在localhost中部署symfony2应用程序,php,apache,symfony,Php,Apache,Symfony,我在SO中遇到了许多与此相关的问题,但找不到解决问题的方法 我已将演示symfony应用程序复制到/var/www/html/myproject文件夹中。我只能访问localhost/myproject/web/app_dev.php,但不能访问localhost/myproject/web/app.php。基本上我想从开发环境切换到生产环境 当我访问app.php时,我只得到一个空白页面。我如何解决这个问题 以下是我的routing.yml文件 app: resource: "@App

我在SO中遇到了许多与此相关的问题,但找不到解决问题的方法

我已将演示symfony应用程序复制到
/var/www/html/myproject
文件夹中。我只能访问
localhost/myproject/web/app_dev.php
,但不能访问
localhost/myproject/web/app.php
。基本上我想从开发环境切换到生产环境

当我访问app.php时,我只得到一个空白页面。我如何解决这个问题

以下是我的routing.yml文件

app:
    resource: "@AppBundle/Controller/"
    type:     annotation
编辑

错误日志(app/logs/prod.log)


您需要创建捆绑包并为其配置路由。在此之后,prod环境将正常工作。有可能acme在产品中不起作用


@Cedric:Acme Demo Bundle仅在app_dev.php上配置。您必须先创建另一个具有正确路由的Bundle,您可以在app/config/routing.yml中看到您的Bundle的路由列表,或者在您的配置的扩展中设置的任何内容


更多信息。

在阅读了不同的教程和手册后,我终于能够通过以下更改解决此问题

路由.yml

app:
    resource: "@AppBundle/Controller/"
    type:     annotation


_acme_demo:
    resource: "@AcmeDemoBundle/Resources/config/routing.yml"
AppKernel.php(此处未显示整个文件)

在上面的文件中注册了AcmeDemoBundle。您必须注释掉
/$bundles[]=new Acme\DemoBundle\AcmeDemoBundle()以防止在开发和测试环境中两次注册捆绑包

编辑完这两个文件后,转到项目文件夹并执行以下操作:

php app/console --env=prod cache:clear

然后在浏览器
localhost/myproject/web/app.php
中加载与app\u dev.php中相同的捆绑包

您有捆绑包吗?看起来你没有路线。尝试为acmedemobundle使用路由。是,默认为Acme bundle。问题是应用程序可以与dev环境(app_dev.php)一起工作,但不能与app.phpThats all一起工作!您需要创建捆绑包并为其配置路由。在此之后,prod环境将正常工作。acme可能无法在产品中运行。阅读文档对不起,再次说明解决方案是什么?acme Demo捆绑包仅在app_dev.php上配置。您必须先创建另一个具有正确路由的捆绑包,您可以在
app/config/routing.yml
中查看捆绑包的路由列表,或在您的配置扩展中设置的任何内容
public function registerBundles()
    {
        $bundles = array(
            new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
            new Symfony\Bundle\SecurityBundle\SecurityBundle(),
            new Symfony\Bundle\TwigBundle\TwigBundle(),
            new Symfony\Bundle\MonologBundle\MonologBundle(),
            new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
            new Symfony\Bundle\AsseticBundle\AsseticBundle(),
            new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
            new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
            new AppBundle\AppBundle(),
             new Acme\DemoBundle\AcmeDemoBundle(),

        );

        if (in_array($this->getEnvironment(), array('dev', 'test'))) {
            $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
            //$bundles[] = new Acme\DemoBundle\AcmeDemoBundle();
            $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
            $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
            $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
        }

        return $bundles;
    }
php app/console --env=prod cache:clear