Composer psr-4 自动加载在部署后无法正常工作

Composer psr-4 autoload not working after deployment

我有自己的小 MVC 框架,我使用 composer psr-4 自动加载。

在我自己的电脑上它工作得很好,但是当我将它部署到我的 Ubuntu 服务器时它就不再工作了。 (它再也找不到任何 类)我已经尝试了很多东西,但无论我尝试什么都行不通...

我试过的:

这是我的composer.json:

{
  "autoload": {
    "psr-4": {
      "App\": "app",
      "Core\": "core",
      "Magister\": "vendor/Magister"
    }
  },
  "require": {
    "philo/laravel-blade": "^3.1"
  }
}

我只是不明白为什么它不能在我的服务器上运行.... 我在我的服务器上使用另一个版本的 php:7.1,我在我的计算机上使用 5.6,但这应该没有什么区别吧?

如何解决这个问题?我只是不明白为什么会这样....:(

编辑:

我的代码:

Index.php:

<?php

require "core/app.php";

$app = new \Core\App();

echo $app->start();

app.php:

<?php

namespace Core;

require "./vendor/autoload.php";

class App
{

    function start()
    {
        ini_set('display_errors', 1);
        ini_set('display_startup_errors', 1);
        error_reporting(E_ALL ^ E_DEPRECATED);

        $MC = new Routing();
        // This is where it fails. Get the error: "class Core\Routing not found"

Routing.php:

<?php

namespace Core;

Use App\routes;

class Routing
{
    private $parameters = [];

    public function GetMC($Getroute){
    }

}

服务器上的文件结构:

我已从树中排除供应商地图

好的...我已经修复了。

我已将 composer.json 更改为:

{
  "autoload": {
    "psr-4": {
      "App\": "app/",
      "Core\": "core/",
      "Magister\": "vendor/Magister/"
    },
    "classmap": [
      "app/",
      "core/",
      "vendor/Magister/"
    ]
  },
  "require": {
    "philo/laravel-blade": "^3.1"
  }
}

如果你想使用 psr-4,你需要大写你的目录到

app
- Modules
- Controllers
- Views
-- Layouts
...

请参阅 this post 了解为什么您的自动加载不起作用。