【问题标题】:ReflectionException error on php artisan routesphp工匠路线上的ReflectionException错误
【发布时间】:2014-05-17 02:10:46
【问题描述】:

每次运行 php artisan routes 时,我都会收到 ReflectionException 错误,并且 UsersController 类不存在。我很确定确实如此。

我尝试了php composer dump-autoloadphp artisan clear-compiled,它们都给出了相同的错误。

这是我在/app/storage/logs/的错误日志

[2014-03-30 01:41:24] production.ERROR: exception 'ReflectionException' with message 'Class UsersController does not exist' in C:\wamp\www\re3\vendor\laravel\framework\src\Illuminate\Routing\ControllerInspector.php:28
Stack trace:
#0 C:\wamp\www\re3\vendor\laravel\framework\src\Illuminate\Routing\ControllerInspector.php(28): ReflectionClass->__construct('UsersController')
#1 C:\wamp\www\re3\vendor\laravel\framework\src\Illuminate\Routing\Router.php(269): Illuminate\Routing\ControllerInspector->getRoutable('UsersController', 'users')
#2 C:\wamp\www\re3\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php(211): Illuminate\Routing\Router->controller('users', 'UsersController')
#3 C:\wamp\www\re3\app\routes.php(14): Illuminate\Support\Facades\Facade::__callStatic('controller', Array)
#4 C:\wamp\www\re3\app\routes.php(14): Illuminate\Support\Facades\Route::controller('users', 'UsersController')
#5 C:\wamp\www\re3\vendor\laravel\framework\src\Illuminate\Foundation\start.php(269): require('C:\wamp\www\re3...')
#6 [internal function]: {closure}(Object(Illuminate\Foundation\Application))
#7 C:\wamp\www\re3\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(792): call_user_func(Object(Closure), Object(Illuminate\Foundation\Application))
#8 C:\wamp\www\re3\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(569): Illuminate\Foundation\Application->fireAppCallbacks(Array)
#9 C:\wamp\www\re3\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(552): Illuminate\Foundation\Application->bootApplication()
#10 C:\wamp\www\re3\vendor\laravel\framework\src\Illuminate\Console\Application.php(44): Illuminate\Foundation\Application->boot()
#11 C:\wamp\www\re3\vendor\laravel\framework\src\Illuminate\Console\Application.php(33): Illuminate\Console\Application::make(Object(Illuminate\Foundation\Application))
#12 C:\wamp\www\re3\artisan(46): Illuminate\Console\Application::start(Object(Illuminate\Foundation\Application))
#13 {main} [] []

【问题讨论】:

  • 你有调用堆栈要分享吗?恐怕只是异常类的名字是不够的,不用猜测,可能会发生什么。
  • 您的意思是我的控制器中的方法名称?
  • 当你得到一个错误时,通常你也会得到一个错误的调用堆栈,如果你在命令行中没有得到它,请检查你的日志。这个调用堆栈可能会让我们了解导致错误的原因。
  • 我已经用app/storage/logs/ 的结果更新了我的问题我希望这就是你的意思。

标签: laravel laravel-4 composer-php


【解决方案1】:

不知何故,Laravel 无法找到您的 UsersController,运行

composer dumpautoload

然后检查文件vendor/composer/autoload_classmap.php,你的UsersController 必须在那里,否则composer 将无法自动加载它,Laravel 将无法访问它。

如果您在 int 中找不到您的控制器,您必须检查:

1) 你的 composer.json 文件,你的控制器所在的文件夹必须在:

"autoload": {
    "classmap": [
        "app/controllers",
                  ....
    ],

2) 检查您的类是否正确命名。

3) 如果您使用的是命名空间:

类用户控制器扩展控制器 { ... }

您必须在对它的引用中使用命名空间,在这种情况下,使用 PSR-4(甚至 PSR-0)自动加载您的类可能会更好。

4) 将 autoload_classmap.php 中的类与不存在的类进行比较。命名或目录放置必须有所不同。

5) 检查你的类是否都以

开头
<?php 

不只是

<?

这对 Composer 和 PHP 来说可能没有太大区别,但对 Laravel 来说确实如此。

【讨论】:

  • 我注释掉了Routes::controller('users'),我得到了同样的错误,但这次没有找到Class ListingsController。我检查了autoload_classmap.php,但找不到UsersController,也找不到ListingsController
  • 添加了更多信息以帮助您解决问题。
  • #5 是解决方案。我不敢相信这样一个小细节可以使一切变得不同。我的课程使用&lt;? 而不是&lt;?php。非常感谢
  • 不错!我几乎没有添加最后一个。 :)
  • composer dumpautoload 很有魅力!到处寻找这个解决方案。谢谢。
【解决方案2】:

在控制器文件中检查命名空间。

例如,

namespace App\Http\Controllers\home;

在上面的名称空间中,控制器文件应该存在于主文件夹中。如果它存在于主文件夹中,并且如果我没有在它上面包含 home,则会出现反射错误。

简单地说命名空间应该与放置控制器文件的文件夹结构相对应。

【讨论】:

    【解决方案3】:

    就我而言,碰巧我有两个名称相同但位置不同的控制器:

    app\Http\Controllers\Auth\PasswordController.php

    app\Http\Controllers\Admin\Auth\PasswordController.php

    最后一个

    app\Http\Controllers\Admin\Auth\PasswordController.php

    有一个错误的命名空间(namespace App\Http\Controllers\Auth; 而不是 **namespace App\Http\Controllers\Admin\Auth;*),因此我经常得到 ReflectionException 异常

    【讨论】:

      【解决方案4】:

      检查控制器名称 有时你可能会忘记 's' ,例如 StudentsController

      【讨论】:

        猜你喜欢
        • 2015-03-09
        • 2021-07-18
        • 2018-05-07
        • 2013-05-31
        • 2016-08-17
        • 2017-06-20
        • 2016-06-16
        • 1970-01-01
        • 2016-07-04
        相关资源
        最近更新 更多