October: Invalid method override "__CONSTRUCT"

Created on 31 May 2019  路  2Comments  路  Source: octobercms/october

  • OctoberCMS Build: 447
  • PHP Version: 7.3

Description:

Looks like symfony had update and it breaking octobercms routing

Symfony\Component\HttpFoundation\Exception\SuspiciousOperationException: Invalid method override "__CONSTRUCT". in /var/www/html/vendor/symfony/http-foundation/Request.php:1376
Stack trace:
#0 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php(159): Symfony\Component\HttpFoundation\Request->getMethod()
#1 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(612): Illuminate\Routing\RouteCollection->match(Object(Illuminate\Http\Request))
#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(601): Illuminate\Routing\Router->findRoute(Object(Illuminate\Http\Request))
#3 /var/www/html/vendor/october/rain/src/Router/CoreRouter.php(20): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request))
#4 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176): October\Rain\Router\CoreRouter->dispatch(Object(Illuminate\Http\Request))
#5 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request))
#6 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(46): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#7 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure))
#8 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#9 /var/www/html/vendor/fideloper/proxy/src/TrustProxies.php(56): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#10 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): Fideloper\Proxy\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure))
#11 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request))
#12 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request))
#13 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(151): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#14 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request))
#15 /var/www/html/index.php(65): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
#16 {main}

Steps To Reproduce:

Not found yet, it randomly appearing in system logs.

Question

Most helpful comment

If you have this problem on Laravel <5.8.33 just add this to your app/Exceptions/Handler.php file:

use Symfony\Component\HttpFoundation\Exception\SuspiciousOperationException;

class Handler extends ExceptionHandler
{
    protected $dontReport = [
        /* */
        SuspiciousOperationException::class,
    ];

    protected function prepareException(Exception $e)
    {
        if ($e instanceof SuspiciousOperationException) {
            $e = new NotFoundHttpException(null, $e);
        }

        return parent::prepareException($e);
    }
}

All 2 comments

It's not a bug, you're being scanned for vulnerabilities by someone manipulating the HTTP headers being sent to your server. That exception is thrown when the X-Forwarded-Host header looks suspicious to Symfony: https://github.com/symfony/http-foundation/blob/master/Request.php#L1135

If you have this problem on Laravel <5.8.33 just add this to your app/Exceptions/Handler.php file:

use Symfony\Component\HttpFoundation\Exception\SuspiciousOperationException;

class Handler extends ExceptionHandler
{
    protected $dontReport = [
        /* */
        SuspiciousOperationException::class,
    ];

    protected function prepareException(Exception $e)
    {
        if ($e instanceof SuspiciousOperationException) {
            $e = new NotFoundHttpException(null, $e);
        }

        return parent::prepareException($e);
    }
}
Was this page helpful?
0 / 5 - 0 ratings