我在SO中经历了很多与此相关的问题,但无法找到解决问题的方法。
我已将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
修改
错误日志(app / logs / 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 :(得分:1)
您需要创建捆绑包并为其配置路由。在这个prod环境将是有效的。极致有可能在产品中起作用。
@Cedric:Acme Demo Bundle仅在app_dev.php上配置,您必须先使用正确的路由创建另一个捆绑包,您可以在app / config / routing.yml或您设置的任何内容中查看捆绑包的路由列表你的配置的扩展。
更多信息here。
答案 1 :(得分: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中相同的包