php - SlimPHP Callable 不存在

标签 php slim

我有一个使用 Slim 框架(第 3 版)的 API。项目结构在根目录下有一个api目录。在其中我有“controllers”、“models”、“public”、“src”等的目录,以及我的 composer.json 和 vendor(一旦运行 composer install)。我的 Controller 都有命名空间“App\Controllers”,composer.json 有

"psr-4": {
    "App\\": ""
}

在自动加载中定义。在击中路线时,我正在调用我的 Controller (例如 App\Controllers\AccountController:login)。所有这些在我的 vagrant 环境中工作正常,但是一旦我将它上传到我的生产服务器(共享主机并且我将整个 api 目录从我的本地环境删除到共享主机中的 public_html 目录),我得到

Type: RuntimeException

Message: Callable App\Controllers\AccountController does not exist

File: /home/downunde/public_html/api/vendor/slim/slim/Slim/CallableResolver.php

Line: 62

#0 /home/downunde/public_html/api/vendor/slim/slim/Slim/CallableResolverAwareTrait.php(45): Slim\CallableResolver->resolve('App\Controllers...')

#1 /home/downunde/public_html/api/vendor/slim/slim/Slim/Route.php(314): Slim\Routable->resolveCallable('App\Controllers...')

#2 /home/downunde/public_html/api/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(116): Slim\Route->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response))

#3 /home/downunde/public_html/api/vendor/slim/slim/Slim/Route.php(297): Slim\Route->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response))

#4 /home/downunde/public_html/api/vendor/slim/slim/Slim/App.php(441): Slim\Route->run(Object(Slim\Http\Request), Object(Slim\Http\Response))

#5 /home/downunde/public_html/api/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(116): Slim\App->__invoke(Object(Slim\Http\Request), Object(Slim\Http\Response))

#6 /home/downunde/public_html/api/vendor/slim/slim/Slim/App.php(337): Slim\App->callMiddlewareStack(Object(Slim\Http\Request), Object(Slim\Http\Response))

#7 /home/downunde/public_html/api/vendor/slim/slim/Slim/App.php(298): Slim\App->process(Object(Slim\Http\Request), Object(Slim\Http\Response))

#8 /home/downunde/public_html/api/public/index.php(52): Slim\App->run()

#9 {main}

两台服务器都是 apache,PHP v. 5.6。我确认它已正确到达路线,但在共享主机上找不到我的 Controller 。

最佳答案

你应该像这样编辑你的 composer.json:

"autoload": {
    "psr-4": {
        "App\\": ""
    }
},
"require": {
    // ...
},
"scripts": {
    // ...
}

dependencies.php

// PagesController
$container['PagesController'] = function ($container)
{
    return new \App\Controller\PagesController; 
};

接下来,你更新你的自动加载

$ composer dump-autoload -o

对不起我的英语...

关于php - SlimPHP Callable 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35947270/

相关文章:

php - MySQL : Server has gone away

php - 纤细的斜线路线

rest - 如何为Slim Framework中内置的REST API编写单元测试?

css - 在 slim 框架元素中包含 css 文件

php - 表格更新 - 不工作

PHP 错误 - 类的对象无法转换为字符串

php - 未定义的属性:Illuminate\Database\Eloquent\Relations\BelongsTo::$name laravel 5.4

php - slim : how to log all request to the framework

php - 无法使用 Slim Framework 从 PUT 请求获得响应

html - 提交后自动返回结果页面