严重错误:未捕获的错误:找不到类'App \ Config'

时间:2019-02-21 12:19:45

标签: php composer-php autoload psr-4

我已经构建了一个自定义的MVC框架。 在本地运行正常,当我尝试使其在实时共享托管服务器上运行时,会出现此错误:

浏览器中的错误消息:

  

致命错误:未捕获错误:在/www/htdocs/user/project/public/index.php中找不到类'App \ Config':19堆栈跟踪:#0 {main}抛出在/ www / htdocs / user中/project/public/index.php,第19行

Composer.json文件:

{
  "require": {
    "filp/whoops": "^2.3",
    "phpmailer/phpmailer": "^6.0"
  },
  "autoload": {
    "psr-4": {
      "Core\\": "core/",
      "App\\": "app/"
    }
  }
}

我的文件夹和文件结构:(整个项目位于文件夹“ project”中)

enter image description here

Index.php文件

    <?php

/**
 * Front controller
 */

use App\Config;

/**
 * Composer autoloading
 */

require dirname(__DIR__) . '/vendor/autoload.php';

/**
 * Whoops Error and Exception handling
 */

if (Config::SHOW_ERRORS == true){
    $whoops = new \Whoops\Run;
    $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
    $whoops->register();
}

/**
 * Sessions
 */

session_start();

/**
 * Routing
 */

$router = new Core\Router();

// Add the routes
$router->add('', ['controller' => 'Home', 'action' => 'index']);

Config.php文件:

<?php

/**
 * Application configuration
 */

namespace App;

class Config {

    /**
     * Database host
     * @var string
     */

    const DB_HOST = 'localhost';

    /**
     * Mail SMTP Port
     * @var int
     */

    const SMTP_PORT = '2525';
}

我部署到服务器的方法:

  1. 压缩本地文件并导出mysql数据库
  2. 将zip上传到服务器->将其解压缩
  3. 将数据库上传到phpmyadmin
  4. 更改配置文件中的数据库凭据
  5. 运行composer install(我也尝试过:composer install --no-dev
  6. 完成

我已经重复了几次该程序,但是仍然无法正常工作

2 个答案:

答案 0 :(得分:0)

我刚刚尝试做同样的事情,并且看起来可行,请检查以下内容:

/index.php

<?php

require dirname(__DIR__) . '/vendor/autoload.php'; // It must be called first

use App\Config;

echo Config::get('test');
// Result: test

/App/Config.php     

namespace App;

class Config 
{
    public function get($str)
    {   
        return $str;
    }
}

答案 1 :(得分:0)

这是区分大小写的问题-您的自动加载规则使用app作为目录名,但这实际上是App。这可能对不区分大小写的文件系统(Windows)有效,但对不区分大小写的文件系统(Linux)不起作用。您应该将自动加载规则修改为:

{
  "require": {
    "filp/whoops": "^2.3",
    "phpmailer/phpmailer": "^6.0"
  },
  "autoload": {
    "psr-4": {
      "Core\\": "Core/",
      "App\\": "App/"
    }
  }
}