Laravel
Error
Error
Interface "Mpdf\AssetFetcherInterface" not found
GET www.helptofind.us
PHP 8.2.32 — Laravel 11.44.7
Collapse
Expand
vendor frames
5 vendor frames collapsed
45 vendor frames collapsed
vendor/mpdf/mpdf/src/AssetFetcher.php
:13
use Mpdf\Log\Context as LogContext;
use Mpdf\PsrHttpMessageShim\Request;
use Mpdf\PsrLogAwareTrait\PsrLogAwareTrait;
use Psr\Log\LoggerInterface;
class AssetFetcher implements \Psr\Log\LoggerAwareInterface, \Mpdf\AssetFetcherInterface
{
use PsrLogAwareTrait;
private $mpdf;
private $contentLoader;
private $http;
public function __construct(Mpdf $mpdf, LocalContentLoaderInterface $contentLoader, ClientInterface $http, LoggerInterface $logger)
vendor/composer/ClassLoader.php
:576
*
* @param string $file
* @return void
*/
self::$includeFile = \Closure::bind(static function($file) {
include $file;
}, null, null);
}
}
vendor/composer/ClassLoader.php
:427
*/
public function loadClass($class)
{
if ($file = $this->findFile($class)) {
$includeFile = self::$includeFile;
$includeFile($file);
return true;
}
return null;
}
/**
* Finds the path to the file where the class is defined.
*
* @param string $class The name of the class
vendor/mpdf/mpdf/src/ServiceFactory.php
:94
? $this->container->get('localContentLoader')
: new LocalContentLoader();
$assetFetcher = $this->container && $this->container->has('assetFetcher')
? $this->container->get('assetFetcher')
: new AssetFetcher($mpdf, $localContentLoader, $httpClient, $logger);
$normalizeProperties = new NormalizeProperties($mpdf, $sizeConverter, $colorConverter);
$selectorParser = new SelectorParser($mpdf);
$inlineStyleParser = new InlineStyleParser($normalizeProperties);
$inlinePropertyConverter = new InlinePropertyConverter($colorConverter);
$borderMerger = new BorderMerger();
$cssParser = new CssParser($mpdf, $cache, $sizeConverter, $colorConverter, $assetFetcher);
$cssMerger = new CssMerger(
$mpdf,
vendor/mpdf/mpdf/src/Mpdf.php
:1076
$originalConfig = $config;
$config = $this->initConfig($originalConfig);
$serviceFactory = new ServiceFactory($container);
$services = $serviceFactory->getServices(
$this,
$this->logger,
$config,
$this->languageToFont,
$this->scriptToLanguage,
$this->fontDescriptor,
$this->bmp,
$this->directWrite,
$this->wmf
);
app/Http/Controllers/FrontendController.php
:302
}
public function missingPersonPrint($slug){
$person = MissingPerson::where('slug', $slug)->first();
$html = view('mising-person-pdf', compact('person'))->render();
$mpdf = new Mpdf();
$mpdf->WriteHTML($html);
return $mpdf->Output("Missing-Person-{$person->slug}-Help-to-Find-Us.pdf", 'D');
}
public function findMissingPerson(Request $request){
$query = MissingPerson::query()
->filterByLocation($request->all());
// Apply filters if the input is provided
if ($request->filled('name')) {
$query->where('name', 'like', '%' . $request->name . '%');
vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php
:47
if (method_exists($controller, 'callAction')) {
return $controller->callAction($method, $parameters);
}
return $controller->{$method}(...array_values($parameters));
}
/**
* Resolve the parameters for the controller.
*
* @param \Illuminate\Routing\Route $route
* @param mixed $controller
* @param string $method
* @return array
*/
protected function resolveParameters(Route $route, $controller, $method)
vendor/laravel/framework/src/Illuminate/Routing/Route.php
:266
*
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
*/
protected function runController()
{
return $this->controllerDispatcher()->dispatch(
$this, $this->getController(), $this->getControllerMethod()
);
}
/**
* Get the controller instance for the route.
*
* @return mixed
*/
public function getController()
{
vendor/laravel/framework/src/Illuminate/Routing/Route.php
:212
{
$this->container = $this->container ?: new Container;
try {
if ($this->isControllerAction()) {
return $this->runController();
}
return $this->runCallable();
} catch (HttpResponseException $e) {
return $e->getResponse();
}
}
/**
* Checks whether the route's action is a controller.
*
vendor/laravel/framework/src/Illuminate/Routing/Router.php
:808
return (new Pipeline($this->container))
->send($request)
->through($middleware)
->then(fn ($request) => $this->prepareResponse(
$request, $route->run()
));
}
/**
* Gather the middleware for the given route with resolved class names.
*
* @param \Illuminate\Routing\Route $route
* @return array
*/
public function gatherRouteMiddleware(Route $route)
{
vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
:170
*/
protected function prepareDestination(Closure $destination)
{
return function ($passable) use ($destination) {
try {
return $destination($passable);
} catch (Throwable $e) {
return $this->handleException($passable, $e);
}
};
}
/**
* Get a Closure that represents a slice of the application onion.
*
* @return \Closure
*/
vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php
:51
}
throw $exception;
}
return $next($request);
}
}
vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
:209
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$carry = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $this->handleCarry($carry);
} catch (Throwable $e) {
return $this->handleException($passable, $e);
}
};
};
}
/**
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php
:88
$this->isReading($request) ||
$this->runningUnitTests() ||
$this->inExceptArray($request) ||
$this->tokensMatch($request)
) {
return tap($next($request), function ($response) use ($request) {
if ($this->shouldAddXsrfTokenCookie()) {
$this->addCookieToResponse($request, $response);
}
});
}
throw new TokenMismatchException('CSRF token mismatch.');
}
/**
* Determine if the HTTP request uses a ‘read’ verb.
vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
:209
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$carry = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $this->handleCarry($carry);
} catch (Throwable $e) {
return $this->handleException($passable, $e);
}
};
};
}
/**
vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php
:49
// Putting the errors in the view for every view allows the developer to just
// assume that some errors are always available, which is convenient since
// they don't have to continually run checks for the presence of errors.
return $next($request);
}
}
vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
:209
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$carry = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $this->handleCarry($carry);
} catch (Throwable $e) {
return $this->handleException($passable, $e);
}
};
};
}
/**
vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php
:121
$this->startSession($request, $session)
);
$this->collectGarbage($session);
$response = $next($request);
$this->storeCurrentUrl($request, $session);
$this->addCookieToResponse($response, $session);
// Again, if the session has been configured we will need to close out the session
// so that the attributes may be persisted to some storage medium. We will also
// add the session identifier cookie to the application response headers now.
$this->saveSession($request);
return $response;
vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php
:64
if ($this->manager->shouldBlock() ||
($request->route() instanceof Route && $request->route()->locksFor())) {
return $this->handleRequestWhileBlocking($request, $session, $next);
}
return $this->handleStatefulRequest($request, $session, $next);
}
/**
* Handle the given request within session state.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Contracts\Session\Session $session
* @param \Closure $next
* @return mixed
*/
protected function handleRequestWhileBlocking(Request $request, $session, Closure $next)
vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
:209
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$carry = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $this->handleCarry($carry);
} catch (Throwable $e) {
return $this->handleException($passable, $e);
}
};
};
}
/**
vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php
:37
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$response = $next($request);
foreach ($this->cookies->getQueuedCookies() as $cookie) {
$response->headers->setCookie($cookie);
}
return $response;
}
}
vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
:209
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$carry = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $this->handleCarry($carry);
} catch (Throwable $e) {
return $this->handleException($passable, $e);
}
};
};
}
/**
vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php
:75
* @param \Closure $next
* @return \Symfony\Component\HttpFoundation\Response
*/
public function handle($request, Closure $next)
{
return $this->encrypt($next($this->decrypt($request)));
}
/**
* Decrypt the cookies on the request.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* @return \Symfony\Component\HttpFoundation\Request
*/
protected function decrypt(Request $request)
{
foreach ($request->cookies as $key => $cookie) {
vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
:209
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$carry = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $this->handleCarry($carry);
} catch (Throwable $e) {
return $this->handleException($passable, $e);
}
};
};
}
/**
vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
:127
$pipeline = array_reduce(
array_reverse($this->pipes()), $this->carry(), $this->prepareDestination($destination)
);
try {
return $pipeline($this->passable);
} finally {
if ($this->finally) {
($this->finally)($this->passable);
}
}
}
/**
* Run the pipeline and return the result.
*
* @return mixed
vendor/laravel/framework/src/Illuminate/Routing/Router.php
:807
$middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route);
return (new Pipeline($this->container))
->send($request)
->through($middleware)
->then(fn ($request) => $this->prepareResponse(
$request, $route->run()
));
}
/**
* Gather the middleware for the given route with resolved class names.
*
* @param \Illuminate\Routing\Route $route
* @return array
*/
public function gatherRouteMiddleware(Route $route)
vendor/laravel/framework/src/Illuminate/Routing/Router.php
:786
$request->setRouteResolver(fn () => $route);
$this->events->dispatch(new RouteMatched($route, $request));
return $this->prepareResponse($request,
$this->runRouteWithinStack($route, $request)
);
}
/**
* Run the given route within a Stack "onion" instance.
*
* @param \Illuminate\Routing\Route $route
* @param \Illuminate\Http\Request $request
* @return mixed
*/
protected function runRouteWithinStack(Route $route, Request $request)
vendor/laravel/framework/src/Illuminate/Routing/Router.php
:750
* @param \Illuminate\Http\Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function dispatchToRoute(Request $request)
{
return $this->runRoute($request, $this->findRoute($request));
}
/**
* Find the route matching a given request.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Routing\Route
*/
protected function findRoute($request)
{
$this->events->dispatch(new Routing($request));
vendor/laravel/framework/src/Illuminate/Routing/Router.php
:739
*/
public function dispatch(Request $request)
{
$this->currentRequest = $request;
return $this->dispatchToRoute($request);
}
/**
* Dispatch the request to a route and return the response.
*
* @param \Illuminate\Http\Request $request
* @return \Symfony\Component\HttpFoundation\Response
*/
public function dispatchToRoute(Request $request)
{
return $this->runRoute($request, $this->findRoute($request));
vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php
:201
protected function dispatchToRouter()
{
return function ($request) {
$this->app->instance('request', $request);
return $this->router->dispatch($request);
};
}
/**
* Call the terminate method on any terminable middleware.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Http\Response $response
* @return void
*/
public function terminate($request, $response)
vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
:170
*/
protected function prepareDestination(Closure $destination)
{
return function ($passable) use ($destination) {
try {
return $destination($passable);
} catch (Throwable $e) {
return $this->handleException($passable, $e);
}
};
}
/**
* Get a Closure that represents a slice of the application onion.
*
* @return \Closure
*/
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php
:21
*/
public function handle($request, Closure $next)
{
$this->clean($request);
return $next($request);
}
/**
* Clean the request's data.
*
* @param \Illuminate\Http\Request $request
* @return void
*/
protected function clean($request)
{
$this->cleanParameterBag($request->query);
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php
:31
if ($callback($request)) {
return $next($request);
}
}
return parent::handle($request, $next);
}
/**
* Transform the given value.
*
* @param string $key
* @param mixed $value
* @return mixed
*/
protected function transform($key, $value)
{
vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
:209
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$carry = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $this->handleCarry($carry);
} catch (Throwable $e) {
return $this->handleException($passable, $e);
}
};
};
}
/**
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php
:21
*/
public function handle($request, Closure $next)
{
$this->clean($request);
return $next($request);
}
/**
* Clean the request's data.
*
* @param \Illuminate\Http\Request $request
* @return void
*/
protected function clean($request)
{
$this->cleanParameterBag($request->query);
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php
:51
if ($callback($request)) {
return $next($request);
}
}
return parent::handle($request, $next);
}
/**
* Transform the given value.
*
* @param string $key
* @param mixed $value
* @return mixed
*/
protected function transform($key, $value)
{
vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
:209
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$carry = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $this->handleCarry($carry);
} catch (Throwable $e) {
return $this->handleException($passable, $e);
}
};
};
}
/**
vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php
:27
if ($max > 0 && $request->server('CONTENT_LENGTH') > $max) {
throw new PostTooLargeException('The POST data is too large.');
}
return $next($request);
}
/**
* Determine the server 'post_max_size' as bytes.
*
* @return int
*/
protected function getPostMaxSize()
{
if (is_numeric($postMaxSize = ini_get('post_max_size'))) {
return (int) $postMaxSize;
vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
:209
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$carry = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $this->handleCarry($carry);
} catch (Throwable $e) {
return $this->handleException($passable, $e);
}
};
};
}
/**
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php
:110
null,
$this->getHeaders($data)
);
}
return $next($request);
}
/**
* Determine if the incoming request has a maintenance mode bypass cookie.
*
* @param \Illuminate\Http\Request $request
* @param array $data
* @return bool
*/
protected function hasValidBypassCookie($request, array $data)
{
vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
:209
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$carry = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $this->handleCarry($carry);
} catch (Throwable $e) {
return $this->handleException($passable, $e);
}
};
};
}
/**
vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php
:49
* @return \Illuminate\Http\Response
*/
public function handle($request, Closure $next)
{
if (! $this->hasMatchingPath($request)) {
return $next($request);
}
$this->cors->setOptions($this->container['config']->get('cors', []));
if ($this->cors->isPreflightRequest($request)) {
$response = $this->cors->handlePreflightRequest($request);
$this->cors->varyHeader($response, 'Access-Control-Request-Method');
return $response;
}
vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
:209
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$carry = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $this->handleCarry($carry);
} catch (Throwable $e) {
return $this->handleException($passable, $e);
}
};
};
}
/**
vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php
:58
{
$request::setTrustedProxies([], $this->getTrustedHeaderNames());
$this->setTrustedProxyIpAddresses($request);
return $next($request);
}
/**
* Sets the trusted proxies on the request.
*
* @param \Illuminate\Http\Request $request
* @return void
*/
protected function setTrustedProxyIpAddresses(Request $request)
{
$trustedIps = $this->proxies() ?: config('trustedproxy.proxies');
vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
:209
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$carry = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $this->handleCarry($carry);
} catch (Throwable $e) {
return $this->handleException($passable, $e);
}
};
};
}
/**
vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php
:22
* @param \Closure $next
* @return \Symfony\Component\HttpFoundation\Response
*/
public function handle(Request $request, Closure $next)
{
return $next($request);
}
/**
* Invoke the deferred callbacks.
*
* @param \Illuminate\Http\Request $request
* @param \Symfony\Component\HttpFoundation\Response $response
* @return void
*/
public function terminate(Request $request, Response $response)
{
vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
:209
// since the object we're given was already a fully instantiated object.
$parameters = [$passable, $stack];
}
$carry = method_exists($pipe, $this->method)
? $pipe->{$this->method}(...$parameters)
: $pipe(...$parameters);
return $this->handleCarry($carry);
} catch (Throwable $e) {
return $this->handleException($passable, $e);
}
};
};
}
/**
vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
:127
$pipeline = array_reduce(
array_reverse($this->pipes()), $this->carry(), $this->prepareDestination($destination)
);
try {
return $pipeline($this->passable);
} finally {
if ($this->finally) {
($this->finally)($this->passable);
}
}
}
/**
* Run the pipeline and return the result.
*
* @return mixed
vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php
:176
$this->bootstrap();
return (new Pipeline($this->app))
->send($request)
->through($this->app->shouldSkipMiddleware() ? [] : $this->middleware)
->then($this->dispatchToRouter());
}
/**
* Bootstrap the application for HTTP requests.
*
* @return void
*/
public function bootstrap()
{
if (! $this->app->hasBeenBootstrapped()) {
$this->app->bootstrapWith($this->bootstrappers());
vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php
:145
$this->requestStartedAt = Carbon::now();
try {
$request->enableHttpMethodParameterOverride();
$response = $this->sendRequestThroughRouter($request);
} catch (Throwable $e) {
$this->reportException($e);
$response = $this->renderException($request, $e);
}
$this->app['events']->dispatch(
new RequestHandled($request, $response)
);
return $response;
vendor/laravel/framework/src/Illuminate/Foundation/Application.php
:1220
*/
public function handleRequest(Request $request)
{
$kernel = $this->make(HttpKernelContract::class);
$response = $kernel->handle($request)->send();
$kernel->terminate($request, $response);
}
/**
* Handle the incoming Artisan command.
*
* @param \Symfony\Component\Console\Input\InputInterface $input
* @return int
*/
public function handleCommand(InputInterface $input)
// Register the Composer autoloader...
require __DIR__.'/../vendor/autoload.php';
// Bootstrap Laravel and handle the request...
(require_once __DIR__.'/../bootstrap/app.php')
->handleRequest(Request::capture());
Request
GET
/missing-person/test-test-14yrs-chandigarh-2026-06-27/print
Headers
cf-visitor
{"scheme":"https"}
cf-connecting-ip
216.73.216.6
cdn-loop
cloudflare; loops=1
user-agent
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
cf-ray
a1fa079fcc417929-CMH
x-forwarded-for
216.73.216.6
Body
Application
Routing
controller
App\Http\Controllers\FrontendController@missingPersonPrint
Routing Parameters
{
"slug": "test-test-14yrs-chandigarh-2026-06-27"
}
Database Queries
mysql
(2.64 ms)
select * from `sessions` where `id` = 'eHU5PVq9d6tgJGbWdyVd0fK4LxWzeHchBsoP5aHe' limit 1
mysql
(1.02 ms)
select * from `missing_people` where `slug` = 'test-test-14yrs-chandigarh-2026-06-27' limit 1