2012-11-14 27 views
1

我已阅读有关将我的symfony2应用程序部署到生产环境的食谱。我发现它在开发模式下效果很好,但prod模式首先不允许登录(虽然我使用开发模式中的凭证登录时输入了错误的凭据),但后来经过多次清理和热身后prod缓存,我只是从我的prod路线获取http500。如何部署symfony2 - 我的开发环境工程,但不是生产

我原来在配置文件一看,不知道这有什么关系呢:

config_dev.php:

imports: 
    - { resource: config.yml } 

framework: 
    router: { resource: "%kernel.root_dir%/config/routing_dev.yml" } 
    profiler: { only_exceptions: false } 

web_profiler: 
    toolbar: true 
    intercept_redirects: false 

monolog: 
    handlers: 
     main: 
      type: stream 
      path: %kernel.logs_dir%/%kernel.environment%.log 
      level: debug 
     firephp: 
      type: firephp 
      level: info 

assetic: 
    use_controller: true 

config_prod:

imports: 
    - { resource: config.yml } 

#doctrine: 
# orm: 
#  metadata_cache_driver: apc 
#  result_cache_driver: apc 
#  query_cache_driver: apc 

monolog: 
    handlers: 
     main: 
      type:   fingers_crossed 
      action_level: error 
      handler:  nested 
     nested: 
      type: stream 
      path: %kernel.logs_dir%/%kernel.environment%.log 
      level: debug 

我还注意到有一个routing_dev.php,但没有routing_prod,prod环境很好,但在我的本地主机,所以......?

+0

框架路由器参数默认是“%kernel.root_dir%/ config/routing.y ML”。 config_dev.yml覆盖它以加载routing_dev.yml,它在加载routing.yml之前加载一些额外的dev路由(用于分析)。所以,不,我不认为这应该是导致你的问题,除非你已经修改了routing_dev.yml并且把你所有的路由导入到那里,而不是路由到.yml – redbirdo

+0

另外,你有没有尝试寻找在Web服务器/ PHP错误日志,看看是否有任何进一步的信息? – redbirdo

回答

0

在生产环境中运行应用程序/控制台缓存时:warmup命令需要确保以如下方式运行:app/console cache:warmup --env=prod --no-debug另外,请记住,该命令将以当前用户的身份将缓存预热,因此所有文件都将由当前用户拥有,而不是Web服务器用户(例如:www-data)。这可能是你得到500服务器错误的原因。在您的热身缓存运行此:chown -R www-data.www-data app/cache/prod(一定要与您的Web服务器用户更换www-data

确保您parameters.ini文件具有自常见于发生的任何适当的CONFIGS为不检查这个文件。你可能会使用任何代码库,或者(甚至我已经这样做了),可能只是忘记将参数从dev设置到prods的parmeters.ini文件中

您还需要查看你的app/logs/prod.log看看当你尝试登录时会发生什么

+0

谢谢我将检查缓存文件夹的权限。我没有使用存储库,所以这不是问题,我也从来没有进入登录屏幕,我只得到一个空白页面(最有可能的http500),所以我不知道什么是gonig。我会尽力查看日志中是否有任何内容,谢谢。 –

+0

如果它只是一个空白屏幕,那么它可能是一个缓存文件夹的权限问题。一旦你检查出来,让我知道你找到了什么。 – lifo