今天我遇到了一個非常奇怪的情況。我使用我的應用程序的幾個環境用於不同的目的(已知的:dev,qa,prod;以及用於通過FTP保存文件的devftp,並立即在線檢查更改,其他則有SVN配置)。Symfony2混合不同的環境
事情是由於某種原因,環境變得混亂起來,它發生在我之前,但並沒有給它太多的重要性(有一次我刪除了一個實體列,儘管我絕對沒有參考該列在應用程序中,我有一個ReflectionException錯誤,我重新添加了列而沒有使用它,幾個星期後,我再次刪除它沒有任何問題)。其中一個特別的錯誤是,在devftp中,我聲明瞭一個服務,dev正在告訴我「未找到服務」。這是Nginx的錯誤日誌:
2012/09/07 06:33:16 [error] 3327#0: *9 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught exception 'Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException' with message 'You have requested a non-existent service "aks.fs".' in XXXX/dev/app/bootstrap.php.cache:202
Stack trace:
#0 XXXX/devftp/src/AKS/XXBundle/AKSXXBundle.php(18): Symfony\Component\DependencyInjection\Container->get('aks.fs')
#1 XXXX/dev/app/bootstrap.php.cache(521): AKS\XXBundle\AKSXXBundle->boot()
#2 XXXX/dev/app/bootstrap.php.cache(548): Symfony\Component\HttpKernel\Kernel->boot()
#3 XXXX/dev/web/app.php(13): Symfony\Component\HttpKernel\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request))
#4 {main}
thrown in XXXX/dev/app/bootstrap.php.cache on line 202" while reading response header from upstream, client: XXXX, server: dev.XXXX.com, request: "GET/HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "dev.XXXX.com"
"dev.XXXX.com.error.log" 509L, 72936C
你可以看到開發文件夾#1如何調用#0上devftp文件夾。 dev沒有boot()方法,devftp確實會調用aks.fs.儘管這就是爲什麼生活在dev文件夾中的開發環境是從devftp文件夾調用某些東西?
這發生在qa和dev之間,qa和devftp之間。 (我已經清除了緩存(dev和prod)幾次,都是從CLI和刪除整個文件夾)。 重要的是要說這隻發生在prod env上,使用app_dev.php完美無缺。
任何想法?
你使用APC嗎? –
是的,它的配置類似於http://symfony.com/doc/current/book/performance.html。你認爲它可能與它有關? – ikleiman
我認爲一開始你可以關閉它。如果它有幫助 - 我可以給你一個提示,如何爲不同的環境定製不同的APC密鑰 –