You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Filament v3.2部署报错:Filament\Forms\Components\FieldSet类未找到

部署Laravel+Filament项目到Ubuntu时出现Class "Filament\Forms\Components\FieldSet" not found错误

本地Windows 11环境运行完全正常,但部署到Ubuntu 20.04生产服务器后,抛出错误:
Class "Filament\Forms\Components\FieldSet" not found
已核对文件大小写,且执行过composer install,仅服务器端出现该问题。

环境详情

  • 本地:Windows 11
  • 服务器:Ubuntu 20.04
  • Laravel版本:11
  • Filament版本:3.2

composer.json内容

{    
    "name": "laravel/laravel",    
    "type": "project",    
    "description": "The skeleton application for the Laravel framework.",    
    "keywords": ["laravel", "framework"],    
    "license": "MIT",    
    "require": {        
        "php": "^8.2",        
        "althinect/filament-spatie-roles-permissions": "^2.2",        
        "arbermustafa/filament-locationpickr-field": "2.0.0",        
        "awcodes/filament-quick-create": "^3.4",        
        "bezhansalleh/filament-language-switch": "^3.1",        
        "bezhansalleh/filament-shield": "^3.2",        
        "blade-ui-kit/blade-heroicons": "^2.4",        
        "filament/filament": "^3.2",        
        "laravel/framework": "^11.9",        
        "laravel/sanctum": "^4.0",        
        "laravel/tinker": "^2.9",        
        "malzariey/filament-daterangepicker-filter": "^3.0",        
        "outhebox/blade-flags": "^1.5",        
        "propaganistas/laravel-phone": "^5.3",        
        "solution-forest/filament-access-management": "^2.2",        
        "spatie/laravel-permission": "^6.9",        
        "spatie/laravel-translatable": "^6.8",        
        "ysfkaya/filament-phone-input": "^3.1"    
    },    
    "require-dev": {        
        "fakerphp/faker": "^1.23",        
        "laravel/pint": "^1.13",        
        "laravel/sail": "^1.26",        
        "mockery/mockery": "^1.6",        
        "nunomaduro/collision": "^8.0",        
        "phpunit/phpunit": "^11.0.1"    
    },    
    "autoload": {        
        "psr-4": {            
            "App\\": "app/",            
            "Database\\Factories\\": "database/factories/",            
            "Database\\Seeders\\": "database/seeders/"        
        }    
    },    
    "autoload-dev": {        
        "psr-4": {            
            "Tests\\": "tests/"        
        }    
    },    
    "scripts": {        
        "post-autoload-dump": [            
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",            
            "@php artisan package:discover --ansi",            
            "@php artisan filament:upgrade"        
        ],        
        "post-update-cmd": [            
            "@php artisan vendor:publish --tag=laravel-assets --ansi --force"        
        ],        
        "post-root-package-install": [            
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""        
        ],        
        "post-create-project-cmd": [            
            "@php artisan key:generate --ansi",            
            "@php -r \"file_exists('database/database.sqlite') || touch('database/database.sqlite');\"",            
            "@php artisan migrate --graceful --ansi"        
        ]    
    },    
    "extra": {        
        "laravel": {            
            "dont-discover": []        
        }    
    },    
    "config": {        
        "optimize-autoloader": true,        
        "preferred-install": "dist",        
        "sort-packages": true,        
        "allow-plugins": {            
            "pestphp/pest-plugin": true,            
            "php-http/discovery": true        
        }    
    },    
    "minimum-stability": "dev",    
    "prefer-stable": true
}

已尝试的解决方案

  • 删除vendor文件夹后重新执行composer install
  • 重新克隆项目并执行完整安装步骤
  • 在另一台Windows机器测试代码,运行正常
  • 设置文件夹权限为755,所有者为www-data:www-data
  • 执行缓存清除命令:php artisan config:clear、php artisan cache:clear等

解决思路

  1. 核对类名大小写
    Ubuntu是大小写敏感系统,Filament 3.x中该组件的正确类名是Filament\Forms\Components\Fieldset(最后一个字母小写),Windows不区分大小写所以能正常运行,需确认代码中是否误写为FieldSet。

  2. 验证Filament包完整性
    在服务器执行composer show filament/forms查看安装版本,同时检查vendor/filament/forms/src/Components/目录下是否存在Fieldset.php文件。若文件缺失,执行composer update filament/filament --no-cache强制更新包。

  3. 重新生成自动加载文件
    你的composer配置中optimize-autoloader为true,执行composer dump-autoload --optimize重新生成优化后的自动加载映射,确保类路径匹配正确。

  4. 排查第三方扩展冲突
    项目中多个Filament第三方扩展可能依赖旧版本组件,导致类名引用不一致。可临时注释非核心扩展(如althinect/filament-spatie-roles-permissions、solution-forest/filament-access-management),重新部署测试定位问题。

  5. 清理生产环境编译缓存
    执行php artisan clear-compiled清除编译类缓存,避免部署时提前执行php artisan optimize导致自动加载文件与服务器环境不匹配。

内容的提问来源于stack exchange,提问作者Muhammed Adel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 08:09:55