我们刚刚将我们的一些应用程序(从 1.3)升级到 cakephp 2.2 并重构了代码。我们的基本服务器设置看起来像
- htdocs/subdomain.domain/cakeapp1/...
- htdocs/subdomain.domain/cakeapp2/...
有时我们会收到错误,这是由于问题造成的,蛋糕内部决定从另一个应用程序文件夹中调用代码。因此,我们从 cakeapp1 调用了一个路由,突然,在堆栈跟踪的中间,cake 从 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 嵌入在 cakeapp1 中,但在 cakeapp2 中没有使用,因此很明显,在这个应用程序中引发了错误。错误本身被保存到 cakeapp2/tmp/log/error.log - 而不是 cakeapp1,应该执行原始代码。
有没有其他人遇到过同样的问题?最大的问题是,发生的错误不会发生在每个页面视图上。但它可以在不同的浏览器/机器上重现。在调用另一个 url 并再次调用错误的 url 之后,一切都很好了。
关于在子文件夹托管方案中使用 cakephp,cakephp2 是否有任何变化?