2015-04-07 105 views
1

我已经经历了许多与此相关的问题,但无法找到解决我的问题的方法。如何使用apache2在本地主机上部署symfony2应用程序

我已将demo 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 

编辑

错误日志(应用程序/日志/ prod.log)

[2015-04-06 22:54:53] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /"" at /home/fazlan/ppp/myproject/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/RouterListener.php line 144 {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): No route found for \"GET /\" at /home/fazlan/ppp/myproject/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/EventListener/RouterListener.php:144, Symfony\\Component\\Routing\\Exception\\ResourceNotFoundException(code: 0): at /home/fazlan/ppp/myproject/app/cache/prod/appProdUrlMatcher.php:35)"} [] 

回答

0

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

的routing.yml

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


_acme_demo: 
    resource: "@AcmeDemoBundle/Resources/config/routing.yml" 

AppKernel.php(这里未示出的整个文件)

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; 
    } 
在上述文件AcmeDemoBundle

被登记。您必须注释掉//$bundles[] = new Acme\DemoBundle\AcmeDemoBundle();以防止该软件包在开发和测试环境中注册两次。

编辑这两个文件后,进入项目文件夹并做

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

,然后在浏览器localhost/myproject/web/app.php将加载同捆在app_dev.php

1

您需要创建您的包和路由配置为了它。在这个产品环境之后将是工作。有可能极品不是在刺激中工作。你可以在app/config/routing.yml中看到你的包的路由列表,或者你设置的任何东西,你可以在app_dev.php中配置Acme Demo Bundle。作为你的配置的扩展。

更多信息here

+0

我已经编辑与错误的问题日志 – DesirePRG

+0

你有捆绑吗?看起来你没有路线。尝试使用acmedemobundle路线。 – maches

+0

是默认的,Acme包。问题是应用程序与开发环境(app_dev.php)协同工作,但不适用于app.php – DesirePRG

相关问题