【问题标题】:Laravel constantly logging "controller method not found"Laravel 不断记录“找不到控制器方法”
【发布时间】:2014-05-15 14:12:13
【问题描述】:

我正在构建一个 laravel 应用程序,一切似乎都运行良好,除了我不断在日志文件中不断出现这些错误。我的意思是他们每隔几分钟就会出现一次,有时更频繁,有时更少 - 在日志文件中找到真正的问题变得更加困难。除了这些问题,它们并没有真正引起任何问题——我有一个 App::missing 方法来照顾真正的用户。

您知道到哪里寻找解决方案吗?

[2014-05-15 19:58:20] local.ERROR: exception 'Symfony\Component\HttpKernel\Exception\NotFoundHttpException' with message 'Controller method not found.' in /Applications/MAMP/htdocs/gran.pw/vendor/laravel/framework/src/Illuminate/Routing/Controller.php:254
Stack trace:
#0 [internal function]: Illuminate\Routing\Controller->missingMethod(Array)
#1 /Applications/MAMP/htdocs/gran.pw/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(231): call_user_func_array(Array, Array)
#2 /Applications/MAMP/htdocs/gran.pw/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(93): Illuminate\Routing\Controller->callAction('missingMethod', Array)
#3 /Applications/MAMP/htdocs/gran.pw/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(62): Illuminate\Routing\ControllerDispatcher->call(Object(HomeController), Object(Illuminate\Routing\Route), 'missingMethod')
#4 /Applications/MAMP/htdocs/gran.pw/vendor/laravel/framework/src/Illuminate/Routing/Router.php(934): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request), 'HomeController', 'missingMethod')
#5 [internal function]: Illuminate\Routing\Router->Illuminate\Routing\{closure}(Array)
#6 /Applications/MAMP/htdocs/gran.pw/vendor/laravel/framework/src/Illuminate/Routing/Route.php(105): call_user_func_array(Object(Closure), Array)
#7 /Applications/MAMP/htdocs/gran.pw/vendor/laravel/framework/src/Illuminate/Routing/Router.php(1000): Illuminate\Routing\Route->run(Object(Illuminate\Http\Request))
#8 /Applications/MAMP/htdocs/gran.pw/vendor/laravel/framework/src/Illuminate/Routing/Router.php(968): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#9 /Applications/MAMP/htdocs/gran.pw/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(738): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request))
#10 /Applications/MAMP/htdocs/gran.pw/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(708): Illuminate\Foundation\Application->dispatch(Object(Illuminate\Http\Request))
#11 /Applications/MAMP/htdocs/gran.pw/vendor/laravel/framework/src/Illuminate/Http/FrameGuard.php(38): Illuminate\Foundation\Application->handle(Object(Illuminate\Http\Request), 1, true)
#12 /Applications/MAMP/htdocs/gran.pw/vendor/laravel/framework/src/Illuminate/Session/Middleware.php(72): Illuminate\Http\FrameGuard->handle(Object(Illuminate\Http\Request), 1, true)
#13 /Applications/MAMP/htdocs/gran.pw/vendor/laravel/framework/src/Illuminate/Cookie/Queue.php(47): Illuminate\Session\Middleware->handle(Object(Illuminate\Http\Request), 1, true)
#14 /Applications/MAMP/htdocs/gran.pw/vendor/laravel/framework/src/Illuminate/Cookie/Guard.php(51): Illuminate\Cookie\Queue->handle(Object(Illuminate\Http\Request), 1, true)
#15 /Applications/MAMP/htdocs/gran.pw/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Illuminate\Cookie\Guard->handle(Object(Illuminate\Http\Request), 1, true)
#16 /Applications/MAMP/htdocs/gran.pw/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(606): Stack\StackedHttpKernel->handle(Object(Illuminate\Http\Request))
#17 /Applications/MAMP/htdocs/gran.pw/public/index.php(49): Illuminate\Foundation\Application->run()
#18 {main} [] []

【问题讨论】:

    标签: php logging laravel


    【解决方案1】:

    它是一个不存在的 url 的 404。

    即http://example.com/this-url-does-not-exist

    要查看实际导致 404 的 URL - 将其添加到您的过滤器文件中

    App::missing(function($exception)
    {
        Log::error('Missing URL was: ' . Request::fullUrl());
    });
    

    它将在您的日志中记录发生任何异常的 URL。

    这很可能是由于搜索引擎机器人试图搜索旧链接,或者可能是您的应用程序中的一些损坏的链接。

    I did mention this to Taylor as a possible bug in Laravel 4.1 - http异常没有记录丢失的url - 但当时已经关闭。我可能会重新打开它,因为我确定这是一个错误(因为旧的 404 确实记录了 url)。

    【讨论】:

    • 感谢您的想法!我会尝试添加这一行,看看会发生什么
    【解决方案2】:

    看起来你的 HomeController 没有扩展 Laravel 的控制器:

    class HomeController extends Controller {
    
    }
    

    因为你的方法没有missingMethod,而这个方法在 Laravel Controller 基类中。

    【讨论】:

    • 我所有的类都扩展了 BaseController,而 BaseController 又扩展了 Controller。是这个意思吗?
    • 如果您需要这里的人提供帮助,您必须分享您的代码。我说的是我在日志中看到的内容,Laravel 尝试调用 missingMethod 并找不到它,所以你得到了一个找不到的方法。
    猜你喜欢
    • 1970-01-01
    • 2023-01-27
    • 2016-04-04
    • 2014-03-09
    • 2014-05-12
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多