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

Laravel 11部署Hostinger共享服务器后提示控制器不存在求助

Laravel 11共享服务器部署“控制器不存在”问题排查方案
  • 重新安装并优化Composer依赖
    不要直接上传本地的vendor文件夹,在服务器上执行:

    composer install --optimize-autoloader --no-dev
    

    该命令会根据composer.lock安装生产环境依赖,并优化类自动加载规则,这是解决类找不到问题的关键步骤之一。

  • 严格匹配文件与类的大小写
    本地Windows/macOS系统大小写不敏感,但Hostinger的Linux服务器是大小写严格区分的:

    • 确保控制器文件名(如WelcomeController.php)与类名(class WelcomeController)完全一致
    • 路由中引用控制器时,无论是用use引入还是完整命名空间,大小写都要和文件/类名匹配,比如:
      // 正确写法
      use App\Http\Controllers\WelcomeController;
      Route::get('/', [WelcomeController::class, 'index']);
      
      // 或完整命名空间写法
      Route::get('/', [\App\Http\Controllers\WelcomeController::class, 'index']);
      
  • 清除Laravel缓存
    共享服务器上执行以下命令清除各类缓存:

    php artisan cache:clear
    php artisan route:clear
    php artisan config:clear
    php artisan view:clear
    

    若无法通过SSH执行,可临时创建clear-cache.php文件放在项目根目录,内容如下,访问后删除:

    <?php
    require __DIR__.'/vendor/autoload.php';
    $app = require_once __DIR__.'/bootstrap/app.php';
    $kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
    $kernel->call('cache:clear');
    $kernel->call('route:clear');
    $kernel->call('config:clear');
    $kernel->call('view:clear');
    echo "缓存已清除";
    
  • 验证控制器路径与命名空间

    • 控制器必须放在app/Http/Controllers目录下,文件顶部的命名空间必须为:
      namespace App\Http\Controllers;
      
    • 路由文件web.php中必须正确引入控制器,或使用完整命名空间调用。
  • 检查服务器环境配置

    • 确认服务器PHP版本为8.2,可通过php -v或phpinfo页面验证,避免面板设置与实际运行版本不符
    • 设置正确的文件权限:控制器文件设为644,目录设为755,确保服务器能读取文件
    • 检查是否缺少Laravel必需的PHP扩展(如mbstring、xml、ctype),可通过phpinfo查看已安装扩展列表
  • 重新生成自动加载映射
    执行以下命令更新类加载映射,确保Laravel能定位到控制器类:

    composer dump-autoload --optimize
    

内容的提问来源于stack exchange,提问作者Lukas Juckevičius

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 10:57:02