致命错误:未捕获的错误:找不到类“App\Config”

Posted

技术标签:

【中文标题】致命错误:未捕获的错误:找不到类“App\\Config”【英文标题】:Fatal error: Uncaught Error: Class 'App\Config' not found致命错误:未捕获的错误:找不到类“App\Config” 【发布时间】:2019-07-15 08:36:16 【问题描述】:

我已经构建了一个自定义 MVC 框架。 本地工作正常,当我尝试让它在实时共享托管服务器上工作时,我会收到此错误:

浏览器中的错误消息:

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

Composer.json 文件:


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

我的文件夹和文件结构:(整个项目在文件夹内:“project”)

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';

我部署到服务器的方法:

    压缩本地文件并导出 mysql 数据库 上传压缩包到服务器 -> 解压 上传数据库到phpmyadmin 在配置文件中更改数据库凭据 运行composer install(我也试过:composer install --no-dev) 完成

这个过程我已经重复了好几次了,但是还是不行

【问题讨论】:

试试composer dump-autoload 两个系统是否运行相同的操作系统? (app/App/ 在 index.php 中您是否正在加载 composer 自动加载文件? composer dump-autoload 没有带来任何变化 我已将 index.php 添加到帖子中,请查看 您应该在使用 App/Config 之前使用自动加载。 【参考方案1】:

我刚刚尝试做同样的事情,它似乎工作,检查这个:

/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;
    

【讨论】:

【参考方案2】:

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


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

【讨论】:

以上是关于致命错误:未捕获的错误:找不到类“App\Config”的主要内容,如果未能解决你的问题,请参考以下文章

为啥致命错误:未捕获的错误:找不到类“Illuminate\Foundation\Application”

PHP致命错误:未捕获错误:找不到类

为啥我收到 PHP 致命错误:未捕获的错误:找不到类“MyClass”? [复制]

我有这样的问题期待帮助致命错误:未捕获的错误:找不到类'Illuminate\Foundation\Application'[重复]

致命错误:未捕获的错误:在 magento 2 中刷新缓存时找不到类“DOMDocument”

致命错误:未捕获的错误:在 prestashop 中找不到类“Db”