子域名MVC项目报Class 'App\Models\User'未找到错误求助
子域名生产环境类加载失败排查与解决
问题场景
主域名domain.com和子域名sub.domain.com分别配置独立MVC目录,主域名运行正常,但子域名在生产环境抛出类找不到的致命错误,本地XAMPP环境运行正常。
错误日志
Fatal error: Uncaught Error: Class "App\Models\User" not found in /home/u527983822/domains/domain.com/public_html/momo/app/controllers/home.php:16 Stack trace: #0 [internal function]: App\Controllers\Home->index() #1 /home/u527983822/domains/domain.com/public_html/momo/app/core/route/app.php(28): call_user_func_array() #2 /home/u527983822/domains/domain.com/public_html/momo/index.php(9): App\Core\Route\App->__construct() #3 {main} thrown in /home/u527983822/domains/domain.com/public_html/sub/app/controllers/home.php on line 16
相关代码
控制器home.php
<?php namespace App\Controllers; use App\Core\Controller\Controller; use App\Models\User; use App\Core\Csrf\CSRFHelper; use App\Models\Lead; use App\Models\Agent; use DateTime; class Home extends Controller { public function index() { $authenticator = new User(); $agents_activity = new Agent();
User模型代码
<?php namespace App\Models; use App\Core\Database\Database; use App\Libs\PHPMailer\EmailSender; class User {
项目目录结构
主域名domain.com目录结构: │ ├── app │ ├── assets │ ├── --------------sub/ │ │ └── -----app 子域名sub.domain.com目录 │ ├──vendor ├── ------assets │ ├── .htaccess ├── ------vendor │ ├── composer.json ├── ------.htaccess │ ├── composer.lock ├── ------composer.json │ ├── index.php ├── ------composer.lock ├── ------ index.php
解决方案
1. 修复Composer自动加载配置
- 检查子域名目录下的
composer.json,确认PSR-4命名空间映射正确:{ "autoload": { "psr-4": { "App\\": "app/" } } } - 进入子域名根目录,执行命令更新自动加载文件:
composer dump-autoload
2. 修正文件大小写与权限
- 生产环境(Linux系统)区分文件名大小写,确保User模型文件名为
User.php(首字母大写),而非user.php。 - 调整子域名目录权限,确保服务器进程可读取文件:
chmod -R 644 /home/u527983822/domains/domain.com/public_html/sub/app/Models/ chmod -R 755 /home/u527983822/domains/domain.com/public_html/sub/app/
3. 验证入口文件的自动加载路径
- 打开子域名的
index.php,确认引入的是自身目录下的autoload.php:// 正确路径 require __DIR__ . '/vendor/autoload.php'; - 禁止主域名与子域名共用
vendor目录,确保子域名有独立的依赖包。
4. 核对命名空间与目录结构
- 确认子域名的
app/Models目录层级与命名空间App\Models严格对应,User.php必须放在app/Models/目录下。
内容的提问来源于stack exchange,提问作者Rishabh Raj
相关产品推荐
相关产品推荐

