我一直在使用CakePHP 3 Beta在我的本地计算机上运行一个项目(使用Cake服务器运行OS X)。有时我会将此项目复制到删除测试服务器(使用Apache运行Ubuntu)。
上次我将所有文件复制到远程服务器时,Beta 2是最新版本,并且该网站在两台计算机上都运行良好。
当Beta 3问世时,我更新了我的本地项目并继续在本地计算机上进行处理,而没有遇到任何问题。
今天我将整个项目复制到测试服务器,就像它在我的机器上一样(当然是调整数据库配置),但这次发生了一些奇怪的事情:
当我访问http://www.example.com/controller/action之类的网址时,我收到了“丢失控制器”错误,如下面的屏幕截图所示:
我一直在关注documentation上看到的约定,所以我的控制器是UsersController.php文件中的UsersController类
但是,如果我访问http://www.example.com/Users/action,例如,它就可以了。
请记住,完全相同的文件使用小写URL在我的本地计算机上工作,因此它不仅仅是一些拼写错误或错放的文件。
这对我的所有控制器都会发生。
我现在应该遵循命名约定,错误页面建议我和用户在我的所有控制器上使用小写首字母吗? 这是一个错误还是我做错了什么?
如果您需要任何其他信息,请随时提问。
感谢您帮助我!
最好的问候,
丹尼尔
答案 0 :(得分:2)
您错过了适当的变形路线,可以将users
转换为Users
以匹配文件名UsersController.php
,这可以从查看{{1}的错误消息中看出来失踪了。
它适用于您的本地计算机,因为默认情况下OS X文件系统默认情况下不区分大小写,与Ubuntu中的区分大小写不一样。
如果您最近更新了核心,默认情况下,应用路由中存在的usersContoller
调用可能会缺少RouteBuilder::fallback()
参数,这在以前是不必要的。
因此,请检查您的路线,并在必要时更新您的应用模板。
<强> https://github.com/cakephp/app/commit/4719b42f9db0d80b3dd22edc6a4476566dbb0215 强>