2012-09-08 4 views
1

오늘 아주 이상한 상황에 처했습니다. 필자는 여러 가지 용도로 여러 가지 응용 프로그램을 사용합니다 (알려진 것들 : dev, qa, prod; devftp). FTP를 통해 파일을 저장하고 즉시 온라인으로 변경 사항을 확인하고 다른 것들은 SVN 구성을 사용합니다.Symfony2 다른 환경을 혼합하기

그 이유는 환경이 혼란 해지기 전에 이전에 일어난 일이지만 너무 많은 중요성을주지 않았기 때문입니다 (한 번 엔티티 열을 삭제했는데 그 열에 대한 참조가 전혀 없었음에도 불구하고 응용 프로그램에서 ReflectionException 오류가 발생했습니다. 문제없이 다시 삭제 한 후 몇 주 후에 열을 다시 추가했습니다. 특히 한 가지 오류는 devftp에서 서비스를 선언했고 dev는 "서비스를 찾을 수 없음"이라고 말합니다. 이것은의 nginx 오류 로그에서입니다 : dev에 폴더 # 1 devftp 폴더 # 0을 호출하는 방법을

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 

당신은 볼 수 있습니다. dev는 boot() 메서드가 없으며 devftp는 aks.fs.를 호출하고 호출합니다. 그럼에도 불구하고 dev 폴더에있는 dev 환경이 devftp 폴더에서 무언가를 호출하는 이유는 무엇입니까?

이것은 qa와 dev 사이에서, 그리고 qa와 devftp 사이에서도 발생했습니다. (CLI에서 삭제하고 전체 폴더를 삭제하는 등 여러 번 캐시 (dev 및 prod)을 정리했습니다). 이 작업은 prod env에서만 발생하며 app_dev.php는 완벽하게 작동합니다.

아이디어가 있으십니까?

+0

APC를 사용합니까? –

+0

예, http://symfony.com/doc/current/book/performance.html에서와 같이 구성됩니다. 그걸 그와 관련 있다고 생각하니? – ikleiman

+0

처음에는 당신이 그것을 끌 수 있다고 생각합니다. 도움이된다면 팁을 주겠다. 다른 환경에 맞게 다른 APC 키를 사용자 정의하는 방법 –

답변

3

제게 모든 환경에 동일한 APC 키를 사용하는 것처럼 보입니다 (출시라고 부르지 만 이것은 실제로 환경입니다). 당신의 환경에 대해 서로 다른 APC 키를 설정하는

시도 :

$loader = new ApcUniversalClassLoader('aks_dev'); 

또는

$loader = new ApcUniversalClassLoader('aks_test'); 

정도에

$loader = new ApcUniversalClassLoader('aks_qa'); 

.

+0

Duh! 이제 알겠다! 나는 각각 $ loader = new를 호출했다. ApcUniversalClassLoader ('sf2.apc.'); 이 예와 같이 키를 변경하지 않고 감사! – ikleiman

관련 문제