2012-08-17 1 views
0

우리는 (1.3에서) 몇 가지 앱을 cakephp 2.2로 업그레이드하고 코드를 리팩터링했습니다. 있는dispatcher가 가끔씩 다른 앱의 코드를 호출합니다.

  • htdocs에/subdomain.domain/cakeapp1/...
  • htdocs에/subdomain.domain/cakeapp2/...

때때로 우리는 오류가 같은 우리의 기본 서버 설정 보인다 문제로 인해, 그 케이크는 내부적으로 다른 앱 폴더에서 코드를 호출하기로 결정합니다. 그래서 우리는 cakeapp1에서 루트를 호출하고 갑자기 스택 추적 중간에 cakeapp2에서 파일을 호출합니다. cakeapp1에는 코드는 예를 들어 "클라이언트"테이블을 참조 없지만

그래서, 우리는 다음과 수신 오류 :

Missing Database Table 
Table clients for model Client was not found in datasource default. 

Stack Trace 
/home/www/subdomain.domain/cakeapp2/lib/Cake/Model/Model.php line 3180 → Model->setSource(string) 
/home/www/subdomain.domain/cakeapp2/lib/Cake/Model/Model.php line 2631 → Model->getDataSource() 
/home/www/subdomain.domain/cakeapp2/app/Model/AppModel.php line 22 → Model->find(string, array) 
/home/www/subdomain.domain/cakeapp2/app/Controller/AppController.php line 237 → AppModel->find(string, array) 
/home/www/subdomain.domain/cakeapp2/app/Controller/AppController.php line 41 → AppController->__initializeAppSettings() 
[internal function] → AppController->beforeFilter(CakeEvent) 
/home/www/subdomain.domain/cakeapp2/lib/Cake/Event/CakeEventManager.php line 246 → call_user_func(array, CakeEvent) 
/home/www/subdomain.domain/cakeapp2/lib/Cake/Controller/Controller.php line 670 → CakeEventManager->dispatch(CakeEvent) 
/home/www/subdomain.domain/cakeapp2/lib/Cake/Routing/Dispatcher.php line 183 → Controller->startupProcess() 
/home/www/subdomain.domain/cakeapp2/lib/Cake/Routing/Dispatcher.php line 161 → Dispatcher->_invoke(UsersController, CakeRequest, CakeResponse) 
APP/webroot/index.php line 92 → Dispatcher->dispatch(CakeRequest, CakeResponse) 

또 다른 오류는, 플러그인 (debugkit)가 발견되지 않았는지 확인합니다. debugkit은 cakeapp1에 내장되어 있지만 cakeapp2에서는 사용되지 않으므로이 앱에서 오류가 발생합니다. 오류 자체는 cakeapp2/tmp/log/error.log에 저장되며 원래 코드가 실행되어야하는 cakeapp1에 저장되지 않습니다.

다른 누구도 동일한 문제가 있습니까? 큰 문제는 모든 페이지보기에서 오류가 발생하지 않는다는 것입니다. 그러나 그것은 다른 브라우저/기계에서 재현 가능합니다. 다른 URL을 호출 한 후 오류가 발생한 URL을 다시 호출하면 모든 것이 정상입니다.

cakephp2의 하위 폴더 호스팅 시나리오에서 cakephp 사용과 관련된 변경 사항이 있습니까?

+0

캐시 관련 일 수 있습니까? 공유 캐시를 사용할 때 접두어가 서로 다른지 확인하십시오. – Ceeram

+0

@Ceeram : 어떻게 공유 캐시를 변경할 수 있습니까? core.php는 완벽한 바닐라입니다. –

+1

https://github.com/cakephp/cakephp/blob/master/app/Config/core.php#L253 – Ceeram

답변

6

Cake가 Cake를 사용하도록 설정하여 APC를 기본적으로 캐시 엔진으로 사용할 수 있습니다. 현재 app/Config/core.php에서 캐시 설정에 사용 된 $ 접두사를 변경하지 않아 두 앱에서 동일한 설정을 사용하게됩니다. 고유 한 값으로 변경하면 문제가 해결됩니다.

+0

맞아요. 그가 말한 것입니다.) – Ceeram

+0

@admad : $가 더 적당하지 않습니까? prefix = md5 (ROOT)를 기본값으로 사용 하시겠습니까? –

+0

2.3 릴리스에서는 이러한 문제를 피하기 위해 기본적으로 파일 캐시 엔진을 다시 사용하도록 간단히 전환합니다. – ADmad