使用Beta 3在远程服务器上丢失控制器错误

时间:2014-12-20 19:18:25

标签: php cakephp cakephp-3.0

我一直在使用CakePHP 3 Beta在我的本地计算机上运行一个项目(使用Cake服务器运行OS X)。有时我会将此项目复制到删除测试服务器(使用Apache运行Ubuntu)。

上次我将所有文件复制到远程服务器时,Beta 2是最新版本,并且该网站在两台计算机上都运行良好。

当Beta 3问世时,我更新了我的本地项目并继续在本地计算机上进行处理,而没有遇到任何问题。

今天我将整个项目复制到测试服务器,就像它在我的机器上一样(当然是调整数据库配置),但这次发生了一些奇怪的事情:

当我访问http://www.example.com/controller/action之类的网址时,我收到了“丢失控制器”错误,如下面的屏幕截图所示:

Error page example

我一直在关注documentation上看到的约定,所以我的控制器是UsersController.php文件中的UsersController类

但是,如果我访问http://www.example.com/Users/action,例如,它就可以了。 请记住,完全相同的文件使用小写URL在我的本地计算机上工作,因此它不仅仅是一些拼写错误或错放的文件。
这对我的所有控制器都会发生。

我现在应该遵循命名约定,错误页面建议我和用户在我的所有控制器上使用小写首字母吗? 这是一个错误还是我做错了什么?

如果您需要任何其他信息,请随时提问。

感谢您帮助我! 最好的问候,
丹尼尔

1 个答案:

答案 0 :(得分:2)

您错过了适当的变形路线,可以将users转换为Users以匹配文件名UsersController.php,这可以从查看{{1}的错误消息中看出来失踪了。

它适用于您的本地计算机,因为默认情况下OS X文件系统默认情况下不区分大小写,与Ubuntu中的区分大小写不一样。

如果您最近更新了核心,默认情况下,应用路由中存在的usersContoller调用可能会缺少RouteBuilder::fallback()参数,这在以前是不必要的。

<强> https://github.com/cakephp/cakephp/commit/5af6464a49204f873aeac52024d295787809822a#diff-37dbf1f85d9888de3ac3c50006f2704f

因此,请检查您的路线,并在必要时更新您的应用模板。

<强> https://github.com/cakephp/app/commit/4719b42f9db0d80b3dd22edc6a4476566dbb0215