zeuxisoo / php-slim-whoops

PHP whoops error on slim framework
131 stars 10 forks source link

Cannot get Whoops to be default error handler. #10

Closed ryanscherler closed 9 years ago

ryanscherler commented 9 years ago

I must be doing something lame here that is not allowing me to use Whoops to handle errors...

<?php

/** 
 * Create Slim instance
 */

$app = new \Slim\App([
    'debug' => true,
]);

/**
 * Add Whoops middleware into slim application
 */
$app->add(new \Zeuxisoo\Whoops\Provider\Slim\WhoopsMiddleware);

/** 
 * Loads environment variables from .env to getenv(), $_ENV and $_SERVER automagically.
 * Access via $app->environment[]
 */

$dotenv = new Dotenv\Dotenv('../');
$dotenv->load();

/** 
 * Require specific ENV vars to be defined.
 */
$dotenv->required(['debug']);

/** 
 * Register classes in DI Container
 */

$container = $app->getContainer();
$container->register(new \App\Services\PageService('../content/pages'));
$container->register(new \App\Services\GlobalService('../content', 'globals.yml'));
$container->register(new \Slim\Views\Twig('../templates', [
    'debug' => $app->environment['debug'],
    'cache' => '../cache/templates'
]));

/**
 * Get classes and inject into controllers as dependencies
 */
$container['App\Controllers\PageController'] = function ($c) {
    return new App\Controllers\PageController($c['page'], $c['view']);
};

/**
 * Add Twig view extensions
 */

$twig = $container->get('view')->getEnvironment();

// Twig core
$twig->addExtension(new Twig_Extension_Debug());

// Twig extensions
$twig->addExtension(new Twig_Extensions_Extension_Text());
$twig->addExtension(new Twig_Extensions_Extension_Date());

// Third party
$twig->addExtension(new Aptoma\Twig\Extension\MarkdownExtension(new Aptoma\Twig\Extension\MarkdownEngine\MichelfMarkdownEngine()));

// API
$twig->addExtension(new App\Extensions\RequestExtension($app->request));
$twig->addExtension(new App\Extensions\PageExtension($container->get('page')));
$twig->addExtension(new App\Extensions\GlobalExtension($container->get('global')));

// Helpers
$twig->addExtension(new App\Extensions\StringExtension());

/**
 * Routes
 */

include('routes.php');

/** 
 * Run app
 */

$app->run();

Any ideas why the default error pages (basic Slim error page handler is showing)?

ryanscherler commented 9 years ago

Do I need to do anything with the default error handler as shown here?

http://docs-new.slimframework.com/handlers/error/

ryanscherler commented 9 years ago

Also, here is my Composer file to show dependencies in the app that may help?

{
    "name": "ryanscherler/spire",
    "type": "library",
    "description": "Spire is a simple approach to content management using flat files.",
    "keywords": ["cms","flat file"],
    "homepage": "http://eastslopestudio.com",
    "authors": [
        {
            "name": "Ryan Scherler",
            "email": "ryan@eastslopestudio.com",
            "homepage": "https://eastslopestudio.com"
        }
    ],
    "require": {
        "slim/slim": "dev-develop",
        "slim/twig-view": "^1.1",
        "kzykhys/yaml-front-matter": "^1.0",
        "league/flysystem": "^1.0",
        "usmanhalalit/strana": "1.*@dev",
        "aptoma/twig-markdown": "^1.2",
        "michelf/php-markdown": "~1.3",
        "twig/extensions": "^1.2",
        "wixel/gump": "dev-master",
        "vlucas/phpdotenv": "^2.0",
        "zeuxisoo/slim-whoops": "0.4.0.*@dev"
    },
    "autoload": {
        "psr-4": {
            "App\\": "app"
        }
    }
}
zeuxisoo commented 9 years ago

Hello @ryanscherler , Thank for you report.

About this issue, I was updated my middleware to overwrite the default error handler in the Slim, and added a view example in examples directory to test this case. Please update your whoops middleware to latest dev version and try again.

ryanscherler commented 9 years ago

Hi @zeuxisoo, I updated to the latest version and tried to throw an error - still showing the same default Slim error handler. No luck ;-/

zeuxisoo commented 9 years ago

Um...Currently, I cannot reproduce why you still showing up the default Slim error handler. But i think maybe some code is parsed before middleware is set and loaded, so this exception is also handled by default handler.