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

时间:2018-01-15 02:56:32

标签: php composer-php autoload psr-4

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

在我自己的计算机上它运行得很好,但是当我将它部署到我的Ubuntu服务器时它不再起作用了。 (它再也找不到任何课程了)我已经尝试了很多东西,但是无论我尝试什么都不行......

我尝试了什么:

  • composer dump-autoload
  • 作曲家更新
  • 删除所有内容并重新上传
  • 在互联网上搜索了几个小时...... :(

这是我的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){
    }

}

服务器上的文件结构:

enter image description here

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

2 个答案:

答案 0 :(得分:2)

好吧......我修好了。

我不知道为什么以及如何运作,但它有效......:D

我已将我的composer.json更改为:

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

答案 1 :(得分:1)

如果要使用psr-4,则需要 大写 您的目录

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

请参阅this帖子,了解为什么自动加载无法正常工作。