Whoops \ Exception \ ErrorException (E_WARNING)
Constant _SERVICE already defined Whoops\Exception\ErrorException thrown with message "Constant _SERVICE already defined" Stacktrace: #13 Whoops\Exception\ErrorException in /home/cookqozi/lecharmedesmillefeuilles/langs/de-site.lang.php:25 #12 define in /home/cookqozi/lecharmedesmillefeuilles/langs/de-site.lang.php:25 #11 require_once in /home/cookqozi/lecharmedesmillefeuilles/src/Tracker/Entity/Visitor.php:950 #10 App\Tracker\Entity\Visitor:loadLang in /home/cookqozi/lecharmedesmillefeuilles/src/Tracker/Entity/Visitor.php:123 #9 App\Tracker\Entity\Visitor:track in /home/cookqozi/lecharmedesmillefeuilles/src/Framework/Middleware/TrackerMiddleware.php:45 #8 Framework\Middleware\TrackerMiddleware:process in /home/cookqozi/lecharmedesmillefeuilles/src/Framework/Middleware/CombinedMiddlewareDelegate.php:56 #7 Framework\Middleware\CombinedMiddlewareDelegate:handle in /home/cookqozi/lecharmedesmillefeuilles/src/Framework/Middleware/TrailingSlashMiddleware.php:22 #6 Framework\Middleware\TrailingSlashMiddleware:process in /home/cookqozi/lecharmedesmillefeuilles/src/Framework/Middleware/CombinedMiddlewareDelegate.php:56 #5 Framework\Middleware\CombinedMiddlewareDelegate:handle in /home/cookqozi/lecharmedesmillefeuilles/vendor/middlewares/whoops/src/Whoops.php:104 #4 Middlewares\Whoops:process in /home/cookqozi/lecharmedesmillefeuilles/src/Framework/Middleware/CombinedMiddlewareDelegate.php:56 #3 Framework\Middleware\CombinedMiddlewareDelegate:handle in /home/cookqozi/lecharmedesmillefeuilles/src/Framework/Middleware/CombinedMiddleware.php:38 #2 Framework\Middleware\CombinedMiddleware:process in /home/cookqozi/lecharmedesmillefeuilles/src/Framework/App.php:99 #1 Framework\App:handle in /home/cookqozi/lecharmedesmillefeuilles/src/Framework/App.php:107 #0 Framework\App:run in /home/cookqozi/lecharmedesmillefeuilles/webroot/index.php:83
Stack frames (14)
13
Whoops\Exception\ErrorException
/langs/de-site.lang.php25
12
define
/langs/de-site.lang.php25
11
require_once
/src/Tracker/Entity/Visitor.php950
10
App\Tracker\Entity\Visitor loadLang
/src/Tracker/Entity/Visitor.php123
9
App\Tracker\Entity\Visitor track
/src/Framework/Middleware/TrackerMiddleware.php45
8
Framework\Middleware\TrackerMiddleware process
/src/Framework/Middleware/CombinedMiddlewareDelegate.php56
7
Framework\Middleware\CombinedMiddlewareDelegate handle
/src/Framework/Middleware/TrailingSlashMiddleware.php22
6
Framework\Middleware\TrailingSlashMiddleware process
/src/Framework/Middleware/CombinedMiddlewareDelegate.php56
5
Framework\Middleware\CombinedMiddlewareDelegate handle
/vendor/middlewares/whoops/src/Whoops.php104
4
Middlewares\Whoops process
/src/Framework/Middleware/CombinedMiddlewareDelegate.php56
3
Framework\Middleware\CombinedMiddlewareDelegate handle
/src/Framework/Middleware/CombinedMiddleware.php38
2
Framework\Middleware\CombinedMiddleware process
/src/Framework/App.php99
1
Framework\App handle
/src/Framework/App.php107
0
Framework\App run
/webroot/index.php83
/home/cookqozi/lecharmedesmillefeuilles/langs/de-site.lang.php
define("_TITLE", "Claire Michelon Übersetzungen");
//---------------------------------------------------------
// DESCRIPTION
//---------------------------------------------------------
define("_DESHOME", "Claire Michelon Übersetzungen, Korrekturlesen und Schreiben von Englisch, Deutsch und Spanisch nach Französisch, Muttersprache Ihres freiberuflichen Übersetzers.");
define("_DESENGAGEMNTS", "Claire Michelon Traductions ist spezialisiert auf Marketing, Gastronomie, Unternehmenskommunikation, internationale und rechtliche Institutionen.");
define("_DESSERVICES", "Claire Michelon Translations bietet Übersetzungen, Korrekturlesen und Schreiben Dienstleistungen in der Region Toulouse und in ganz Frankreich.");
define("_DESBLOGHOME", "Claire Michelon Traductions verpflichtet sich, Ihnen qualitativ hochwertige Blogs zur Verfügung zu stellen, um Sie über seine Neuigkeiten oder Tätigkeitsbereiche zu informieren.");
define("_DESCONTACT", "Claire Michelon Übersetzungen Zitate sind kostenlos und schnell, die Unterlagen für die Erstellung Ihrer Angebote bleiben vertraulich.");
define("_FONCENTREPRISE", "Geschäftsführerin");
define("_SEARCHRES0", "Ergebnisse in unseren Artikeln");
//---------------------------------------------------------
// header.php
//---------------------------------------------------------
define("_ACCUEIL", "Claire Idee");
define("_ENGAGEMENTS", "Verpflichtungen");
define("_VALEURS", "Werte");
define("_SPECIALITE", "Fachgebiete");
define("_TEMOIGNAGESS", "Referenzen");
define("_SERVICE", "Dienstleistungen");
define("_TRAD", "Übersetzen");
define("_RELEC", "Korrektorat");
define("_REDAC", "Redaktion");
//---------------------------------------------------------
// hidden
//---------------------------------------------------------
define("_KEYWORDS", "");
define("_KEYHOME1", "Claire Michelon ist freier Übersetzer. Claire Michelon ist ein qualifizierter Übersetzer. Claire Michelon Provider Übersetzungen, Lektorat und Redaktion in Toulouse und ganz Frankreich. Claire Michelon ein Übersetzer ist seit 2012 Claire Michelon ist Leidenschaft für Reisen und Sprachen (Englisch, Deutsch, Spanisch) Claire Michelon ist gebürtige Französin. dictionnaire.La erfordert natürlich eine ausgezeichnete Beherrschung der Zielsprache");
define("_KEYHOME2", "zu übersetzen, ist es nicht genug, um eine gute Übersetzung ist. Ein guter Übersetzer die Konsistenz der Übersetzung muss sicherstellen müssen traduction.Une um harmonisch und flüssig zu sein, übersetzt Claire Michelon nur Französisch, ihre Muttersprache. ");
define("_KEYHOME3", "wird auch eine Aufzeichnung vor dem Drucken Ihre Dokumente erforderlich um sicherzustellen, dass eine saubere und professionelle Kommunikation haben. Relektüre ist eine berufliche Tätigkeit ein Dokument von einem Drittel bis ein Ende der Korrektur geschrieben zu lesen. es sei denn, alle Replays vertraulich bleiben, vereinbart préalable.La erneute Lesen der Syntax hilft verfeinern, Grammatik, Zeichensetzung Claire Michelon auch von ihm in Korrekturlesen übersetzten Dokumente senden ..");
define("_KEYHOME4", "Claire Michelon Übersetzungen bietet seine Dienstleistungen schriftlich. Sie Schule nicht nur für Ihre Französisch Essays in einem professionellen nennen. Ihre Ideen verdienen zu Papier durch ein professionelles Schreiben zu sein. Auf fragen Sie, Claire Michelon kann ihre Redaktion an einen anderen Fachmann schicken, mit der Popularität des Community-Managements, verpassen Sie nicht die Gelegenheit, einen Fachmann für das Schreiben Ihrer Blogs zu durchlaufen. ");
define("_KEYHOME5", "Das Englisch ist die Amtssprache in 53 Ländern. Englisch Amtssprache der Vereinten Nationen und der EU. Englisch ist eine lebende Sprache. Englisch durch die angereichert ist Dank Plantagenet ist Englisch eine der am meisten gesprochenen Sprachen der Welt, und Englisch wird von vielen als internationale Sprache angesehen. ");
define("_KEYHOME6", "Die deutsche Sprache einen paradoxen Platz in unserer Gesellschaft einnimmt. Deutsch eine wichtige Sprache in Frankreich ist, die Nähe und die Bedeutung des deutschen Partners gegeben. Deutsch ist eine germanische Sprache, die hat Im Deutschen werden die Verben am Ende von Sätzen platziert. Das Lernen von Deutsch kann helfen, die Assimilation skandinavischer Sprachen zu erleichtern. ");
define("_KEYHOME7", "Spanisch ist die offizielle Sprache in 21 Ländern. Spanisch in vielen Ländern Nord- und Südamerika gesprochen wird. Der Spanier hat in der Verlängerung des Königreichs Kastilien verbreiten. Die Spanisch ist die Muttersprache von rund 468 Millionen Menschen, Spanisch ist das am dritthäufigsten gesprochene Wort der Welt, hinter Mandarin und Englisch, und Französisch ist die offizielle Sprache von 29 Ländern. sechs Amtssprachen Französisch ist die Sprache der königlichen und fürstlichen Gerichte zur Zeit des Ancien Régime Französisch ist eine wichtige Sprache der internationalen Diplomatie neben Englisch, Deutsch und Spanisch Französisch ist eine akademische Sprache. ");
define("_KEYENGAGEMENTS1", "Gastronomie ist der Satz von Regeln, die die Kunst der definieren‚guter Laune.‘Gastronomie ein Wissen und Praktiken im Umgang mit Lebensmitteln ist. Ziel der Gastronomie gerecht zu werden .. die Geschmacksknospen Übung Gastronomie enthielt das Gefühl der Geselligkeit Gastronomie ist geschmackliche Bildung, die Empfindungen während der Verkostung von Speisen vielfältig und abwechslungsreich Michelon Claire ist leidenschaftlich über die Gastronomie speichert ..");
define("_KEYENGAGEMENTS2", "Unternehmenskommunikation ist die Reihe von Aktionen entwickelt das Image des Unternehmens zu fördern. Corporate Communication intern oder extern sein kann. Die Business-Kommunikation von der unterscheidet Markenkommunikation, auch bekannt als Firmen- oder Institutionskommunikation anstelle von Unternehmenskommunikation. ");
define("_KEYENGAGEMENTS3", "Internationale Institutionen sind insbesondere zur Vorbeugung und Konflikte zu verwalten. Die internationalen Institutionen verwendet, um die Wirtschaft zu helfen. Die internationalen Institutionen zu internationalem Recht unterliegen. Michelon Claire arbeitete bei einer UN-Agentur , eine internationale Institution Claire Michelon ist eine Freiwillige für internationale Übersetzungsinstitutionen. ");
define("_KEYENGAGEMENTS4", "Legal Übersetzung ist von größter Bedeutung. Legal Übersetzung Rechtskenntnisse erfordert. Die rechtliche Übersetzung, die Nuancen des Ausgangstextes erfassen müssen. Die Herausforderungen einer juristischen Übersetzung gehen darüber hinaus eine allgemeine Übersetzung Claire Michelon Traduction stellt die Vertraulichkeit Ihrer juristischen Dokumente sicher. ");
define("_KEYSERVICES1", "ist ein Dienst die Bereitstellung eines immateriellen. Ein Service ist ein Dienst, der von der Bereitstellung von technischen oder geistigen Fähigkeiten besteht. Dienstleistungen sind eine Industrie. Dienstleistungen sind gelten als nicht lagerfähige Dienstleistungen, die bis zu 70% des BIP ausmachen. ");
define("_KEYSERVICES2", "Vertrauen Sie nicht zu einem Online-Übersetzer für professionelle Übersetzungen. Claire Michelon Übersetzungen ist freier Übersetzer mit Sitz in Toulouse. Claire Michelon Übersetzungen Ihre Web übersetzen können Dokumente und die Website auf ganz Frankreich. Claire Michelon Übersetzungen erfasst die Nuancen der zu übersetzenden Texte und transkribiert sie auf Französisch Claire Michelon Traductions übersetzt Ihre englischen, deutschen und spanischen Texte ins Französische. ");
/home/cookqozi/lecharmedesmillefeuilles/langs/de-site.lang.php
define("_TITLE", "Claire Michelon Übersetzungen");
//---------------------------------------------------------
// DESCRIPTION
//---------------------------------------------------------
define("_DESHOME", "Claire Michelon Übersetzungen, Korrekturlesen und Schreiben von Englisch, Deutsch und Spanisch nach Französisch, Muttersprache Ihres freiberuflichen Übersetzers.");
define("_DESENGAGEMNTS", "Claire Michelon Traductions ist spezialisiert auf Marketing, Gastronomie, Unternehmenskommunikation, internationale und rechtliche Institutionen.");
define("_DESSERVICES", "Claire Michelon Translations bietet Übersetzungen, Korrekturlesen und Schreiben Dienstleistungen in der Region Toulouse und in ganz Frankreich.");
define("_DESBLOGHOME", "Claire Michelon Traductions verpflichtet sich, Ihnen qualitativ hochwertige Blogs zur Verfügung zu stellen, um Sie über seine Neuigkeiten oder Tätigkeitsbereiche zu informieren.");
define("_DESCONTACT", "Claire Michelon Übersetzungen Zitate sind kostenlos und schnell, die Unterlagen für die Erstellung Ihrer Angebote bleiben vertraulich.");
define("_FONCENTREPRISE", "Geschäftsführerin");
define("_SEARCHRES0", "Ergebnisse in unseren Artikeln");
//---------------------------------------------------------
// header.php
//---------------------------------------------------------
define("_ACCUEIL", "Claire Idee");
define("_ENGAGEMENTS", "Verpflichtungen");
define("_VALEURS", "Werte");
define("_SPECIALITE", "Fachgebiete");
define("_TEMOIGNAGESS", "Referenzen");
define("_SERVICE", "Dienstleistungen");
define("_TRAD", "Übersetzen");
define("_RELEC", "Korrektorat");
define("_REDAC", "Redaktion");
//---------------------------------------------------------
// hidden
//---------------------------------------------------------
define("_KEYWORDS", "");
define("_KEYHOME1", "Claire Michelon ist freier Übersetzer. Claire Michelon ist ein qualifizierter Übersetzer. Claire Michelon Provider Übersetzungen, Lektorat und Redaktion in Toulouse und ganz Frankreich. Claire Michelon ein Übersetzer ist seit 2012 Claire Michelon ist Leidenschaft für Reisen und Sprachen (Englisch, Deutsch, Spanisch) Claire Michelon ist gebürtige Französin. dictionnaire.La erfordert natürlich eine ausgezeichnete Beherrschung der Zielsprache");
define("_KEYHOME2", "zu übersetzen, ist es nicht genug, um eine gute Übersetzung ist. Ein guter Übersetzer die Konsistenz der Übersetzung muss sicherstellen müssen traduction.Une um harmonisch und flüssig zu sein, übersetzt Claire Michelon nur Französisch, ihre Muttersprache. ");
define("_KEYHOME3", "wird auch eine Aufzeichnung vor dem Drucken Ihre Dokumente erforderlich um sicherzustellen, dass eine saubere und professionelle Kommunikation haben. Relektüre ist eine berufliche Tätigkeit ein Dokument von einem Drittel bis ein Ende der Korrektur geschrieben zu lesen. es sei denn, alle Replays vertraulich bleiben, vereinbart préalable.La erneute Lesen der Syntax hilft verfeinern, Grammatik, Zeichensetzung Claire Michelon auch von ihm in Korrekturlesen übersetzten Dokumente senden ..");
define("_KEYHOME4", "Claire Michelon Übersetzungen bietet seine Dienstleistungen schriftlich. Sie Schule nicht nur für Ihre Französisch Essays in einem professionellen nennen. Ihre Ideen verdienen zu Papier durch ein professionelles Schreiben zu sein. Auf fragen Sie, Claire Michelon kann ihre Redaktion an einen anderen Fachmann schicken, mit der Popularität des Community-Managements, verpassen Sie nicht die Gelegenheit, einen Fachmann für das Schreiben Ihrer Blogs zu durchlaufen. ");
define("_KEYHOME5", "Das Englisch ist die Amtssprache in 53 Ländern. Englisch Amtssprache der Vereinten Nationen und der EU. Englisch ist eine lebende Sprache. Englisch durch die angereichert ist Dank Plantagenet ist Englisch eine der am meisten gesprochenen Sprachen der Welt, und Englisch wird von vielen als internationale Sprache angesehen. ");
define("_KEYHOME6", "Die deutsche Sprache einen paradoxen Platz in unserer Gesellschaft einnimmt. Deutsch eine wichtige Sprache in Frankreich ist, die Nähe und die Bedeutung des deutschen Partners gegeben. Deutsch ist eine germanische Sprache, die hat Im Deutschen werden die Verben am Ende von Sätzen platziert. Das Lernen von Deutsch kann helfen, die Assimilation skandinavischer Sprachen zu erleichtern. ");
define("_KEYHOME7", "Spanisch ist die offizielle Sprache in 21 Ländern. Spanisch in vielen Ländern Nord- und Südamerika gesprochen wird. Der Spanier hat in der Verlängerung des Königreichs Kastilien verbreiten. Die Spanisch ist die Muttersprache von rund 468 Millionen Menschen, Spanisch ist das am dritthäufigsten gesprochene Wort der Welt, hinter Mandarin und Englisch, und Französisch ist die offizielle Sprache von 29 Ländern. sechs Amtssprachen Französisch ist die Sprache der königlichen und fürstlichen Gerichte zur Zeit des Ancien Régime Französisch ist eine wichtige Sprache der internationalen Diplomatie neben Englisch, Deutsch und Spanisch Französisch ist eine akademische Sprache. ");
define("_KEYENGAGEMENTS1", "Gastronomie ist der Satz von Regeln, die die Kunst der definieren‚guter Laune.‘Gastronomie ein Wissen und Praktiken im Umgang mit Lebensmitteln ist. Ziel der Gastronomie gerecht zu werden .. die Geschmacksknospen Übung Gastronomie enthielt das Gefühl der Geselligkeit Gastronomie ist geschmackliche Bildung, die Empfindungen während der Verkostung von Speisen vielfältig und abwechslungsreich Michelon Claire ist leidenschaftlich über die Gastronomie speichert ..");
define("_KEYENGAGEMENTS2", "Unternehmenskommunikation ist die Reihe von Aktionen entwickelt das Image des Unternehmens zu fördern. Corporate Communication intern oder extern sein kann. Die Business-Kommunikation von der unterscheidet Markenkommunikation, auch bekannt als Firmen- oder Institutionskommunikation anstelle von Unternehmenskommunikation. ");
define("_KEYENGAGEMENTS3", "Internationale Institutionen sind insbesondere zur Vorbeugung und Konflikte zu verwalten. Die internationalen Institutionen verwendet, um die Wirtschaft zu helfen. Die internationalen Institutionen zu internationalem Recht unterliegen. Michelon Claire arbeitete bei einer UN-Agentur , eine internationale Institution Claire Michelon ist eine Freiwillige für internationale Übersetzungsinstitutionen. ");
define("_KEYENGAGEMENTS4", "Legal Übersetzung ist von größter Bedeutung. Legal Übersetzung Rechtskenntnisse erfordert. Die rechtliche Übersetzung, die Nuancen des Ausgangstextes erfassen müssen. Die Herausforderungen einer juristischen Übersetzung gehen darüber hinaus eine allgemeine Übersetzung Claire Michelon Traduction stellt die Vertraulichkeit Ihrer juristischen Dokumente sicher. ");
define("_KEYSERVICES1", "ist ein Dienst die Bereitstellung eines immateriellen. Ein Service ist ein Dienst, der von der Bereitstellung von technischen oder geistigen Fähigkeiten besteht. Dienstleistungen sind eine Industrie. Dienstleistungen sind gelten als nicht lagerfähige Dienstleistungen, die bis zu 70% des BIP ausmachen. ");
define("_KEYSERVICES2", "Vertrauen Sie nicht zu einem Online-Übersetzer für professionelle Übersetzungen. Claire Michelon Übersetzungen ist freier Übersetzer mit Sitz in Toulouse. Claire Michelon Übersetzungen Ihre Web übersetzen können Dokumente und die Website auf ganz Frankreich. Claire Michelon Übersetzungen erfasst die Nuancen der zu übersetzenden Texte und transkribiert sie auf Französisch Claire Michelon Traductions übersetzt Ihre englischen, deutschen und spanischen Texte ins Französische. ");
/home/cookqozi/lecharmedesmillefeuilles/src/Tracker/Entity/Visitor.php
        //save lang name in cookie
        setCookies('lang', $this->lang, $expire);
    }
 
    /**
     * Loads the file according to the desired language register
     * @param string name
     */
    public function loadLang(string $name): void
    {
        $file = LANGS . DS . $this->lang . '-' . $name . '.lang.php';
        if (!file_exists($file)) {
            $file = LANGS . DS . 'en' . '-' . $name . '.lang.php';
            $this->lang = 'en';
            if (!file_exists($file)) {
                $file = LANGS . DS . 'fr' . '-' . $name . '.lang.php';
                $this->lang = 'fr';
            }
        }
        require_once $file;
    }
 
    /**
     * Init register screen
     * @param string screen
     */
    public function initScreen(): void
    {
        if (isset($_COOKIE['screen'])) {
            $this->screen = $_COOKIE['screen'];
        }
    }
 
    /**
     * @return null|string
     */
    public function getScreen(): ?string
    {
        return $this->screen;
    }
/home/cookqozi/lecharmedesmillefeuilles/src/Tracker/Entity/Visitor.php
                $visitorTable->update($this->id, $visitorParams);
            }
            $this->addRoute($uri);
            $registerParams = [
                'path' => end($this->route)['path'],
                'visited' => end($this->route)['visited'],
                'visitor_id' => $this->id,
            ];
            $registerTable->insert($registerParams);
        } else {
            $setSession = false;
        }
        if (isset($request->getQueryParams()['langue'])) {
            $this->setLang($request->getQueryParams()['langue']);
        }
        if ($setSession) {
            $session[$sessionKey] = (array) $this;
        }
        $this->loadLang('default');
        $this->loadLang('site');
 
        $visitor = [
            'lang' => $this->getLang(),
            'agent_type' => $this->getUaDeviceType(),
        ];
        new PageVar($container, $uri, $visitor);
 
        /*echo '<pre>';
        print_r($session[$sessionKey]);
        echo '</pre>';
        die();*/
        //$session->delete($sessionKey);
    }
 
    /**
     * Get register info geo with Ip
     * @param string ip, host, fai, city, region, country, countryCode, continent, continentCode, currencyCode, currencySymbol, latitude, longitude
     */
    private function infoIp(): void
    {
/home/cookqozi/lecharmedesmillefeuilles/src/Framework/Middleware/TrackerMiddleware.php
     */
    private $container;
 
    public function __construct(ContainerInterface $container)
    {
        $this->container = $container;
    }
 
    public function process(
        ServerRequestInterface $request,
        RequestHandlerInterface $handler
    ): ResponseInterface {
        $this->session = $this->container->get(SessionInterface::class);
        $this->validSession($this->session);
        $visitor = $this->container->get(Visitor::class);
        $visitor->track(
            $this->session,
            $this->sessionKey,
            $request,
            $this->container
        );
        return $handler->handle($request);
    }
 
    private function validSession($session)
    {
        if (!is_array($session) && !$session instanceof \ArrayAccess) {
            throw new \TypeError(
                tradDynamic([_ERRORMIDDLEWARESESSION], 'Tracker')
            );
        }
    }
}
 
/home/cookqozi/lecharmedesmillefeuilles/src/Framework/Middleware/CombinedMiddlewareDelegate.php
        $this->container = $container;
        $this->handler = $handler;
    }
 
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [
                $request,
                [$this, 'handle'],
            ]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
 
    /**
     * @return object
     */
    private function getMiddleware()
    {
        if (array_key_exists($this->index, $this->middlewares)) {
            if (is_string($this->middlewares[$this->index])) {
                $middleware = $this->container->get(
                    $this->middlewares[$this->index]
                );
            } else {
                $middleware = $this->middlewares[$this->index];
            }
            $this->index++;
            return $middleware;
        }
        return null;
/home/cookqozi/lecharmedesmillefeuilles/src/Framework/Middleware/TrailingSlashMiddleware.php
 
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use GuzzleHttp\Psr7\Response;
 
class TrailingSlashMiddleware implements MiddlewareInterface
{
    public function process(
        ServerRequestInterface $request,
        RequestHandlerInterface $handler
    ): ResponseInterface {
        $uri = $request->getUri()->getPath();
        if (!empty($uri) && $uri !== '/' && $uri[-1] === '/') {
            return (new Response())
                ->withStatus(301)
                ->withHeader('Location', substr($uri, 0, -1));
        }
        return $handler->handle($request);
    }
}
 
/home/cookqozi/lecharmedesmillefeuilles/src/Framework/Middleware/CombinedMiddlewareDelegate.php
        $this->container = $container;
        $this->handler = $handler;
    }
 
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [
                $request,
                [$this, 'handle'],
            ]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
 
    /**
     * @return object
     */
    private function getMiddleware()
    {
        if (array_key_exists($this->index, $this->middlewares)) {
            if (is_string($this->middlewares[$this->index])) {
                $middleware = $this->container->get(
                    $this->middlewares[$this->index]
                );
            } else {
                $middleware = $this->middlewares[$this->index];
            }
            $this->index++;
            return $middleware;
        }
        return null;
/home/cookqozi/lecharmedesmillefeuilles/vendor/middlewares/whoops/src/Whoops.php
        $whoops->sendHttpCode(false);
 
        //Catch errors means register whoops globally
        if ($this->catchErrors) {
            $whoops->register();
 
            $shutdown = function () use ($whoops) {
                $whoops->allowQuit(true);
                $whoops->writeToOutput(true);
                $whoops->sendHttpCode(true);
 
                $method = Run::SHUTDOWN_HANDLER;
                $whoops->$method();
            };
 
            register_shutdown_function($shutdown);
        }
 
        try {
            $response = $handler->handle($request);
        } catch (\Throwable $exception) {
            $response = $this->responseFactory->createResponse(500);
            $response->getBody()->write($whoops->$method($exception));
            $response = self::updateResponseContentType($response, $whoops);
        } finally {
            while (ob_get_level() >= $level) {
                ob_end_clean();
            }
        }
 
        if ($this->catchErrors) {
            $whoops->unregister();
        }
 
        return $response;
    }
 
    /**
     * Returns the whoops instance or create one.
     */
/home/cookqozi/lecharmedesmillefeuilles/src/Framework/Middleware/CombinedMiddlewareDelegate.php
        $this->container = $container;
        $this->handler = $handler;
    }
 
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [
                $request,
                [$this, 'handle'],
            ]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
 
    /**
     * @return object
     */
    private function getMiddleware()
    {
        if (array_key_exists($this->index, $this->middlewares)) {
            if (is_string($this->middlewares[$this->index])) {
                $middleware = $this->container->get(
                    $this->middlewares[$this->index]
                );
            } else {
                $middleware = $this->middlewares[$this->index];
            }
            $this->index++;
            return $middleware;
        }
        return null;
/home/cookqozi/lecharmedesmillefeuilles/src/Framework/Middleware/CombinedMiddleware.php
    private $middlewares;
 
    public function __construct(
        ContainerInterface $container,
        array $middlewares
    ) {
        $this->container = $container;
        $this->middlewares = $middlewares;
    }
 
    public function process(
        ServerRequestInterface $request,
        RequestHandlerInterface $handler
    ): ResponseInterface {
        $handler = new CombinedMiddlewareDelegate(
            $this->container,
            $this->middlewares,
            $handler
        );
        return $handler->handle($request);
    }
}
 
/home/cookqozi/lecharmedesmillefeuilles/src/Framework/App.php
            $this->middlewares[] = new RoutePrefixedMiddleware(
                $this->getContainer(),
                $routePrefix,
                $middleware
            );
        }
        return $this;
    }
 
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $this->index++;
        if ($this->index > 1) {
            throw new \Exception();
        }
        $middleware = new CombinedMiddleware(
            $this->getContainer(),
            $this->middlewares
        );
        return $middleware->process($request, $this);
    }
 
    public function run(ServerRequestInterface $request): ResponseInterface
    {
        foreach ($this->modules as $module) {
            $this->getContainer()->get($module);
        }
        return $this->handle($request);
    }
 
    /**
     * @return ContainerInterface
     */
    public function getContainer(): ContainerInterface
    {
        if ($this->container === null) {
            $builder = new ContainerBuilder();
            $env = getenv('ENV') ?: 'production';
            switch ($env) {
                case 'development':
/home/cookqozi/lecharmedesmillefeuilles/src/Framework/App.php
 
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $this->index++;
        if ($this->index > 1) {
            throw new \Exception();
        }
        $middleware = new CombinedMiddleware(
            $this->getContainer(),
            $this->middlewares
        );
        return $middleware->process($request, $this);
    }
 
    public function run(ServerRequestInterface $request): ResponseInterface
    {
        foreach ($this->modules as $module) {
            $this->getContainer()->get($module);
        }
        return $this->handle($request);
    }
 
    /**
     * @return ContainerInterface
     */
    public function getContainer(): ContainerInterface
    {
        if ($this->container === null) {
            $builder = new ContainerBuilder();
            $env = getenv('ENV') ?: 'production';
            switch ($env) {
                case 'development':
                case 'staging':
                    break;
 
                case 'testing':
                case 'production':
                    if (version_compare(PHP_VERSION, '5.3', '>=')) {
                        error_reporting(
                            E_ALL &
/home/cookqozi/lecharmedesmillefeuilles/webroot/index.php
$container->get(Router::class)->get('/', IndexAction::class, 'home');
$app
    ->pipe(Whoops::class)
    ->pipe(TrailingSlashMiddleware::class)
    ->pipe(TrackerMiddleware::class)
    ->pipe(ForbiddenMiddleware::class)
    ->pipe(
        $container->get('admin.prefix'),
        $container->get(RoleMiddlewareFactory::class)->makeForRole('admin')
    )
    ->pipe(MethodMiddleware::class)
    ->pipe(RendererRequestMiddleware::class)
    ->pipe(ForbiddenCsrfMiddleware::class)
    ->pipe(CsrfMiddleware::class)
    ->pipe(RouterMiddleware::class)
    ->pipe(DispatcherMiddleware::class)
    ->pipe(NotFoundMiddleware::class);
 
if (php_sapi_name() !== 'cli') {
    $response = $app->run(ServerRequest::fromGlobals());
    send($response);
}
 
/**
 * Send an HTTP response
 *
 * @return void
 */
function send(ResponseInterface $response)
{
    $http_line = sprintf(
        'HTTP/%s %s %s',
        $response->getProtocolVersion(),
        $response->getStatusCode(),
        $response->getReasonPhrase()
    );
 
    header($http_line, true, $response->getStatusCode());
 
    foreach ($response->getHeaders() as $name => $values) {

Environment & details:

Key Value
langue de
empty
empty
Key Value
lang de
empty
Key Value
PATH /usr/local/bin:/usr/bin:/bin
TEMP /tmp
TMP /tmp
TMPDIR /tmp
PWD /
HTTP_ACCEPT */*
HTTP_ACCEPT_ENCODING gzip
HTTP_CONNECTION Keep-Alive
CONTENT_LENGTH 0
HTTP_HOST www.lecharmedesmillefeuilles.com
HTTP_USER_AGENT claudebot
HTTP_X_FORWARDED_HOST www.lecharmedesmillefeuilles.com
HTTP_X_FORWARDED_PROTO https
REDIRECT_REDIRECT_REDIRECT_UNIQUE_ID ZgX_35_d4ZvKgLu94p8pGgAAAIM
REDIRECT_REDIRECT_REDIRECT_QS_SrvConn 59
REDIRECT_REDIRECT_REDIRECT_QS_AllConn 59
REDIRECT_REDIRECT_REDIRECT_QS_ConnectionId 1711669215643730311593129
REDIRECT_REDIRECT_REDIRECT_SCRIPT_URL /blog/book_club-inclusif
REDIRECT_REDIRECT_REDIRECT_SCRIPT_URI https://www.lecharmedesmillefeuilles.com/blog/book_club-inclusif
REDIRECT_REDIRECT_REDIRECT_LSWS_EDITION Openlitespeed
REDIRECT_REDIRECT_REDIRECT_X-LSCACHE on
REDIRECT_REDIRECT_REDIRECT_REGISTER_GLOBALS 0
REDIRECT_REDIRECT_REDIRECT_TZ Europe/Paris
REDIRECT_REDIRECT_REDIRECT_HTTP_AUTHORIZATION
REDIRECT_REDIRECT_REDIRECT_HTTPS on
REDIRECT_REDIRECT_REDIRECT_SSL_TLS_SNI www.lecharmedesmillefeuilles.com
REDIRECT_REDIRECT_REDIRECT_STATUS 200
REDIRECT_REDIRECT_UNIQUE_ID ZgX_35_d4ZvKgLu94p8pGgAAAIM
REDIRECT_REDIRECT_QS_SrvConn 59
REDIRECT_REDIRECT_QS_AllConn 59
REDIRECT_REDIRECT_QS_ConnectionId 1711669215643730311593129
REDIRECT_REDIRECT_SCRIPT_URL /blog/book_club-inclusif
REDIRECT_REDIRECT_SCRIPT_URI https://www.lecharmedesmillefeuilles.com/blog/book_club-inclusif
REDIRECT_REDIRECT_LSWS_EDITION Openlitespeed
REDIRECT_REDIRECT_X-LSCACHE on
REDIRECT_REDIRECT_REGISTER_GLOBALS 0
REDIRECT_REDIRECT_TZ Europe/Paris
REDIRECT_REDIRECT_HTTPS on
REDIRECT_REDIRECT_SSL_TLS_SNI www.lecharmedesmillefeuilles.com
REDIRECT_REDIRECT_STATUS 200
REDIRECT_UNIQUE_ID ZgX_35_d4ZvKgLu94p8pGgAAAIM
REDIRECT_QS_SrvConn 59
REDIRECT_QS_AllConn 59
REDIRECT_QS_ConnectionId 1711669215643730311593129
REDIRECT_SCRIPT_URL /blog/book_club-inclusif
REDIRECT_SCRIPT_URI https://www.lecharmedesmillefeuilles.com/blog/book_club-inclusif
REDIRECT_LSWS_EDITION Openlitespeed
REDIRECT_X-LSCACHE on
REDIRECT_REGISTER_GLOBALS 0
REDIRECT_TZ Europe/Paris
REDIRECT_HTTP_AUTHORIZATION
REDIRECT_HTTPS on
REDIRECT_SSL_TLS_SNI www.lecharmedesmillefeuilles.com
REDIRECT_STATUS 200
UNIQUE_ID ZgX_35_d4ZvKgLu94p8pGgAAAIM
QS_SrvConn 59
QS_AllConn 59
QS_ConnectionId 1711669215643730311593129
SCRIPT_URL /blog/book_club-inclusif
SCRIPT_URI https://www.lecharmedesmillefeuilles.com/blog/book_club-inclusif
LSWS_EDITION Openlitespeed
X-LSCACHE on
REGISTER_GLOBALS 0
TZ Europe/Paris
HTTPS on
SSL_TLS_SNI www.lecharmedesmillefeuilles.com
SERVER_SIGNATURE
SERVER_SOFTWARE Apache
SERVER_NAME www.lecharmedesmillefeuilles.com
SERVER_ADDR 127.0.0.1
SERVER_PORT 443
REMOTE_ADDR 34.203.242.200
DOCUMENT_ROOT /home/cookqozi/lecharmedesmillefeuilles
REQUEST_SCHEME https
CONTEXT_PREFIX
CONTEXT_DOCUMENT_ROOT /home/cookqozi/lecharmedesmillefeuilles
SERVER_ADMIN cookqozi@lecharmedesmillefeuilles.com
SCRIPT_FILENAME /home/cookqozi/lecharmedesmillefeuilles/webroot/index.php
REMOTE_PORT 47834
REDIRECT_URL /index.php/blog/book_club-inclusif
REDIRECT_QUERY_STRING langue=de
SERVER_PROTOCOL HTTP/1.1
REQUEST_METHOD GET
QUERY_STRING langue=de
REQUEST_URI /blog/book_club-inclusif?langue=de
SCRIPT_NAME /webroot/index.php
PATH_INFO /blog/book_club-inclusif
PATH_TRANSLATED redirect:/webroot/blog/book_club-inclusif/book_club-inclusif
PHP_SELF /webroot/index.php
REQUEST_TIME_FLOAT 1711669215.7163
REQUEST_TIME 1711669215
empty
0. Whoops\Handler\PrettyPageHandler