Php 如何使用apache2在localhost中部署symfony2应用程序
我在SO中遇到了许多与此相关的问题,但找不到解决问题的方法 我已将演示symfony应用程序复制到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
/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