当前位置: 首页 > 知识库问答 >
问题:

Composer psr-4自动加载在部署后不工作

宰父玄天
2023-03-14

我有自己的小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,但这不会有任何区别,对吗?

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

编辑:

我的代码:

指数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"

路由。php:

<?php

namespace Core;

Use App\routes;

class Routing
{
    private $parameters = [];

    public function GetMC($Getroute){
    }

}

服务器上的文件结构:

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

共有2个答案

景信瑞
2023-03-14

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

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

请参阅这篇文章,了解你的自动加载无法工作的原因。

厉成仁
2023-03-14

好吧...我已经修好了。

我换了作曲家。与此相关的json:

{
  "autoload": {
    "psr-4": {
      "App\\": "app/",
      "Core\\": "core/",
      "Magister\\": "vendor/Magister/"
    },
    "classmap": [
      "app/",
      "core/",
      "vendor/Magister/"
    ]
  },
  "require": {
    "philo/laravel-blade": "^3.1"
  }
}
 类似资料:
  • 我刚刚部署了一个使用Heroku和PostGres的网站。我可以上传到一个表单,但不能上传到其他表单。在当地也很好。错误如下: 非常感谢您的帮助。谢谢

  • 我一直在尝试将最简单的Symfony 4 API部署到heroku。所以我做了一个作曲家req api,并更新了我的env和postgres原则,它在我的本地(通过书籍和评论)上运行良好。下一步是添加一个app.json以向heroku提供所有env变量,我还添加了一个Procfile,其中包含: 更进一步,我在自述中添加了一个“按下heroku”按钮,这样我就可以在部署时检查环境变量是否都设置好

  • 我有一个在本地运行良好的Laravel项目(Mavericks),但是psr-4下的类没有加载到我们的后台服务器(CentOS)上。每次尝试composer更新或运行artisan命令时,我都会收到一个反射“未找到类”错误。 我的所有特定于应用程序的类都存储在我的Laravel项目的app/heatherland下,例如: 我的composer.json包含以下条目: 在本地,psr-4类被添加到

  • 1. 概述 本 PSR 是关于由文件路径 自动载入 对应类的相关规范, 本规范是可互操作的,可以作为任一自动载入规范的补充,其中包括 PSR-0,此外, 本 PSR 还包括自动载入的类对应的文件存放路径规范。 关于「能愿动词」的使用 为了避免歧义,文档大量使用了「能愿动词」,对应的解释如下: 必须 (MUST):绝对,严格遵循,请照做,无条件遵守; 一定不可 (MUST NOT):禁令,严令禁止;

  • 我有一个简单的portlet要部署在WebSohere Portal Server中。 这是一个war文件,在其lib文件夹中包含一个jar文件。在jar文件中,我尝试读取一个属性文件。在我的portlet项目中,我在src的root中有一个属性文件,并且可以毫无问题地读取其中的jar文件。 但是如果我重新部署war文件并且不重新启动服务器,下面的代码行返回null并且它不能从属性文件中读取。重新

  • 我正在用Azure函数做一个小POC。我已经从VS模板创建了一个简单的HttpTrigger函数,如果我在localhost中debbug都可以完美地工作,但如果我在Azure中部署,当我试图启动该函数时,我会遇到一个错误: 发生了一个错误。有关更多信息,请检查日志中的错误ID为24D8E48F-D925-45AD-82CF-F767Decc5F6F 如果我签入Insights,错误是: 调用堆栈