cakephp - CakePHP 3“找不到控制器类 XYZ。” 仅在生产服务器上
问题描述
我有一个单独的 AppController 用于我网站的外部 API。我可以在本地开发机器上使用 Postman 很好地连接到 API,但是一旦我将文件移动到测试站点或生产站点,我就会收到 404 错误,例如“找不到控制器类用户”。
{
"message": "Controller class Users could not be found.",
"url": "/api/tv/users/index",
"code": 404,
"file": "/var/www/html/site/vendor/cakephp/cakephp/src/Http/ControllerFactory.php",
"line": 100
}
Ubuntu 16.04、阿帕奇、PHP 7。
所有服务器(本地开发、测试和生产)上的代码和环境应该相同,但它只能在本地机器上运行。我什至不知道要发布什么代码,但这里有一些:
测试代码Api/TV/UsersController:
namespace App\Controller\Api\TV;
class UsersController extends AppController
{
public function index()
{
$this->set([
'message' => 'Why wont you work?',
'_serialize' => [
'message'
]
]);
}
}
路线:
Router::prefix('api', function(RouteBuilder $routes) {
$routes->connect('/v2', [
'controller' => 'users',
'action' => 'login',
'_method' => 'GET'
]);
...
$routes->fallbacks('DashedRoute');
});
Router::prefix('api/v3', function(RouteBuilder $routes) {
$routes->setExtensions(['json']);
$routes->fallbacks('DashedRoute');
});
Router::prefix('api/tv', function(RouteBuilder $routes) {
$routes->setExtensions(['json']);
$routes->fallbacks('DashedRoute');
});
如您所见,我在不同的前缀上有几个不同的 API。只有最后一个不起作用(本地除外)。
我在这里束手无策。我知道答案正盯着我看,但我需要其他人为我指出。
解决方案
所有/
前缀部分(由Inflector::camelize()
_ api/tv
_ Api/Tv
_Api\Tv
Tv
TV
长话短说,将您的TV
文件夹和命名空间部分重命名为Tv
.
推荐阅读
- c++ - 使用条件运算符递归计算模板值或函数时出现错误 C1202(堆栈溢出)
- javascript - React-native 和 react-native-navigation 错误
- python - 在python中使用正则表达式分隔符拆分字符串
- java - FrameworkServlet 'DispatcherServlet' 需要处理很多请求
- android - IllegalStateException:已添加片段;无法从结构日志中找出确切的原因和位置
- php - 如何使用共享服务器将数据导出到 PHP 中的 XLSB 文件
- python - 如何在特定时间执行一段代码
- nhibernate - NHibernate + 流利的映射 + NLog = 在程序集中找不到映射的文档
- python - 如何同时使用 PyQT5 表格和菜单?
- angular - 我应该如何创建一个包含 mat-form-field 和输入的组件?