Comments (6)
Actually, removing : $app->pipe(ErrorHandler::class);
line is fine as it will be overwritten in the $app->pipe(ErrorHeroModule\Middleware\Expressive::class);
. I'm just not sure why it stop in that pipeline in your application as I tested it works at my side. If removing the $app->pipe(ErrorHandler::class);
is works for you, that's fine then.
Yes, set the display_errors
to 0
will use its configured default message, if you're not on ajax request/api request, it will uses template defined.
from errorheromodule.
I tried with php 7.2, latest expressive 3 skeleton, latest ErrorHeroModule
, and it works fine with the following steps:
- install skeleton
$ composer create-project zendframework/zend-expressive-skeleton expressive3-test
1/8: http://packagist.org/p/provider-latest$7f68507803f191a7427d67bb551ed7c16dffb2c8847bc0871515d85f1335a536.json
2/8: http://packagist.org/p/provider-2014$071ad4bcb474a6e381fdf72c1edb120c1ce8d5ee57f75b8d5be7c4950d4f549f.json
3/8: http://packagist.org/p/provider-2018-04$c10e8d6d1331a4ab157a10291cfb54b9186bb3ae91796092c9fdb24102b536b0.json
4/8: http://packagist.org/p/provider-2015$f0c099fa3619c09645d99255b25e8b3e58a71b243b2567e640de1f4df2942a7f.json
5/8: http://packagist.org/p/provider-2018-01$4535d6d33ff5178fa355f9f27f5b8685a5a3a7f4d2f579f5f30a17acaf11d572.json
6/8: http://packagist.org/p/provider-2017-10$a7c8dbbcddd14f86805215ce2d4f2ed2ce6b8101fac72d62a3f2fb52bb3a9267.json
7/8: http://packagist.org/p/provider-2017$1771e8a94be345aa9e8b17ac6ca33c1e0f5236808f34c50e121355e26b9ddcfa.json
8/8: http://packagist.org/p/provider-2016$64ac8aae772112fc158dcb706d917524a8a6966fc28065585011b7f28dc39d0b.json
Finished: success: 8, skipped: 0, failure: 0, total: 8
Installing zendframework/zend-expressive-skeleton (3.1.0)
- Installing zendframework/zend-expressive-skeleton (3.1.0): Loading from cache
Created project in expressive3-test
> ExpressiveInstaller\OptionalPackages::install
Setting up optional packages
Setup data and cache dir
Removing installer development dependencies
What type of installation would you like?
[1] Minimal (no default middleware, templates, or assets; configuration only)
[2] Flat (flat source code structure; default selection)
[3] Modular (modular source code structure; recommended)
Make your selection (2):
- Copying src/App/ConfigProvider.php
Which container do you want to use for dependency injection?
[1] Aura.Di
[2] Pimple
[3] zend-servicemanager
[4] Auryn
[5] Symfony DI Container
[6] PHP-DI
Make your selection or type a composer package name and version (zend-servicemanager): 3
- Adding package zendframework/zend-servicemanager (^3.3)
- Copying config/container.php
Which router do you want to use?
[1] Aura.Router
[2] FastRoute
[3] zend-router
Make your selection or type a composer package name and version (FastRoute): 3
- Adding package zendframework/zend-expressive-zendrouter (^3.0)
- Whitelist package zendframework/zend-expressive-zendrouter
- Copying config/routes.php
Which template engine do you want to use?
[1] Plates
[2] Twig
[3] zend-view installs zend-servicemanager
[n] None of the above
Make your selection or type a composer package name and version (n): 3
- Adding package zendframework/zend-expressive-zendviewrenderer (^2.0)
- Whitelist package zendframework/zend-expressive-zendviewrenderer
- Copying templates/error/404.phtml
- Copying templates/error/error.phtml
- Copying templates/layout/default.phtml
- Copying templates/app/home-page.phtml
Which error handler do you want to use during development?
[1] Whoops
[n] None of the above
Make your selection or type a composer package name and version (Whoops): 1
- Adding package filp/whoops (^2.1.12)
- Copying config/autoload/development.local.php.dist
Remove installer
Removing composer.lock from .gitignore
Removing Expressive installer classes, configuration, tests and docs
Loading composer repositories with package information
Updating dependencies (including require-dev)
1/1: https://codeload.github.com/Roave/SecurityAdvisories/legacy.zip/5c802c6300dca269edde06c6ae8c7eb561de3176
Finished: success: 1, skipped: 0, failure: 0, total: 1
Package operations: 66 installs, 0 updates, 0 removals
- Installing zendframework/zend-component-installer (2.1.1): Loading from cache
- Installing ocramius/package-versions (1.3.0): Loading from cache
- Installing zendframework/zend-stdlib (3.2.0): Loading from cache
- Installing psr/container (1.0.0): Loading from cache
- Installing container-interop/container-interop (1.2.0): Loading from cache
- Installing zendframework/zend-servicemanager (3.3.2): Loading from cache
- Installing zendframework/zend-validator (2.10.2): Loading from cache
Please select which config file you wish to inject 'Zend\Validator\ConfigProvider' into:
[0] Do not inject
[1] config/config.php
Make your selection (default is 1):1
Remember this option for other packages of the same type? (Y/n)Y
Installing Zend\Validator\ConfigProvider from package zendframework/zend-validator
- Installing zendframework/zend-escaper (2.6.0): Loading from cache
- Installing zendframework/zend-uri (2.6.1): Loading from cache
- Installing zendframework/zend-loader (2.6.0): Loading from cache
- Installing zendframework/zend-http (2.8.0): Loading from cache
- Installing zendframework/zend-router (3.1.0): Loading from cache
Installing Zend\Router\ConfigProvider from package zendframework/zend-router
- Installing psr/http-message (1.0.1): Loading from cache
- Installing zendframework/zend-diactoros (1.8.0): Loading from cache
- Installing zendframework/zend-psr7bridge (1.0.2): Loading from cache
- Installing psr/http-server-handler (1.0.0): Loading from cache
- Installing psr/http-server-middleware (1.0.0): Loading from cache
- Installing fig/http-message-util (1.1.2): Loading from cache
- Installing zendframework/zend-expressive-router (3.1.0): Loading from cache
- Installing zendframework/zend-expressive-zendrouter (3.0.0): Loading from cache
Installing Zend\Expressive\Router\ZendRouter\ConfigProvider from package zendframework/zend-expressive-zendrouter
- Installing zendframework/zend-eventmanager (3.2.1): Loading from cache
- Installing zendframework/zend-view (2.10.0): Loading from cache
- Installing zendframework/zend-expressive-template (2.0.0): Loading from cache
- Installing zendframework/zend-expressive-helpers (5.1.0): Loading from cache
- Installing zendframework/zend-expressive-zendviewrenderer (2.0.0): Loading from cache
Installing Zend\Expressive\ZendView\ConfigProvider from package zendframework/zend-expressive-zendviewrenderer
- Installing squizlabs/php_codesniffer (2.9.1): Loading from cache
- Installing zendframework/zend-config-aggregator (1.1.1): Loading from cache
- Installing zendframework/zend-httphandlerrunner (1.0.1): Loading from cache
Installing Zend\HttpHandlerRunner\ConfigProvider from package zendframework/zend-httphandlerrunner
- Installing sebastian/version (2.0.1): Loading from cache
- Installing sebastian/resource-operations (1.0.0): Loading from cache
- Installing sebastian/recursion-context (3.0.0): Loading from cache
- Installing sebastian/object-reflector (1.1.1): Loading from cache
- Installing sebastian/object-enumerator (3.0.3): Loading from cache
- Installing sebastian/global-state (2.0.0): Loading from cache
- Installing sebastian/exporter (3.1.0): Loading from cache
- Installing sebastian/environment (3.1.0): Loading from cache
- Installing sebastian/diff (3.0.1): Loading from cache
- Installing sebastian/comparator (3.0.1): Loading from cache
- Installing phpunit/php-timer (2.0.0): Loading from cache
- Installing phpunit/php-text-template (1.2.1): Loading from cache
- Installing phpunit/php-file-iterator (2.0.1): Loading from cache
- Installing theseer/tokenizer (1.1.0): Loading from cache
- Installing sebastian/code-unit-reverse-lookup (1.0.1): Loading from cache
- Installing phpunit/php-token-stream (3.0.0): Loading from cache
- Installing phpunit/php-code-coverage (6.0.7): Loading from cache
- Installing doctrine/instantiator (1.1.0): Loading from cache
- Installing webmozart/assert (1.3.0): Loading from cache
- Installing phpdocumentor/reflection-common (1.0.1): Loading from cache
- Installing phpdocumentor/type-resolver (0.4.0): Loading from cache
- Installing phpdocumentor/reflection-docblock (4.3.0): Loading from cache
- Installing phpspec/prophecy (1.7.6): Loading from cache
- Installing phar-io/version (1.0.1): Loading from cache
- Installing phar-io/manifest (1.0.1): Loading from cache
- Installing myclabs/deep-copy (1.8.1): Loading from cache
- Installing phpunit/phpunit (7.2.6): Loading from cache
- Installing zfcampus/zf-composer-autoloading (2.1.0): Loading from cache
- Installing zendframework/zend-stratigility (3.0.1): Loading from cache
- Installing zendframework/zend-expressive (3.0.2): Loading from cache
- Installing zendframework/zend-code (3.3.0): Loading from cache
- Installing symfony/polyfill-mbstring (v1.8.0): Loading from cache
- Installing symfony/console (v4.1.1): Loading from cache
- Installing psr/log (1.0.2): Loading from cache
- Installing zendframework/zend-expressive-tooling (1.0.1): Loading from cache
- Installing zfcampus/zf-development-mode (3.2.0): Loading from cache
- Installing filp/whoops (2.2.0): Loading from cache
zendframework/zend-servicemanager suggests installing ocramius/proxy-manager (ProxyManager 1.* to handle lazy initialization of services)
zendframework/zend-validator suggests installing zendframework/zend-db (Zend\Db component, required by the (No)RecordExists validator)
zendframework/zend-validator suggests installing zendframework/zend-filter (Zend\Filter component, required by the Digits validator)
zendframework/zend-validator suggests installing zendframework/zend-i18n (Zend\I18n component to allow translation of validation error messages)
zendframework/zend-validator suggests installing zendframework/zend-math (Zend\Math component, required by the Csrf validator)
zendframework/zend-validator suggests installing zendframework/zend-i18n-resources (Translations of validator messages)
zendframework/zend-validator suggests installing zendframework/zend-session (Zend\Session component, ^2.8; required by the Csrf validator)
zendframework/zend-http suggests installing paragonie/certainty (For automated management of cacert.pem)
zendframework/zend-router suggests installing zendframework/zend-i18n (^2.7.4, if defining translatable HTTP path segments)
zendframework/zend-expressive-router suggests installing zendframework/zend-expressive-aurarouter (^3.0 to use the Aura.Router routing adapter)
zendframework/zend-expressive-router suggests installing zendframework/zend-expressive-fastroute (^3.0 to use the FastRoute routing adapter)
zendframework/zend-view suggests installing zendframework/zend-authentication (Zend\Authentication component)
zendframework/zend-view suggests installing zendframework/zend-feed (Zend\Feed component)
zendframework/zend-view suggests installing zendframework/zend-filter (Zend\Filter component)
zendframework/zend-view suggests installing zendframework/zend-i18n (Zend\I18n component)
zendframework/zend-view suggests installing zendframework/zend-json (Zend\Json component)
zendframework/zend-view suggests installing zendframework/zend-mvc (Zend\Mvc component)
zendframework/zend-view suggests installing zendframework/zend-navigation (Zend\Navigation component)
zendframework/zend-view suggests installing zendframework/zend-paginator (Zend\Paginator component)
zendframework/zend-view suggests installing zendframework/zend-permissions-acl (Zend\Permissions\Acl component)
zendframework/zend-expressive-template suggests installing zendframework/zend-expressive-platesrenderer (^2.0 to use the Plates template renderer)
zendframework/zend-expressive-template suggests installing zendframework/zend-expressive-twigrenderer (^2.0 to use the Twig template renderer)
zendframework/zend-config-aggregator suggests installing zendframework/zend-config (Allows loading configuration from XML, INI, YAML, and JSON files)
zendframework/zend-config-aggregator suggests installing zendframework/zend-config-aggregator-modulemanager (Allows loading configuration from zend-mvc Module classes)
zendframework/zend-config-aggregator suggests installing zendframework/zend-config-aggregator-parameters (Allows usage of templated parameters within your configuration)
sebastian/global-state suggests installing ext-uopz (*)
phpunit/phpunit suggests installing phpunit/php-invoker (^2.0)
zendframework/zend-expressive suggests installing zendframework/zend-auradi-config (^1.0 to use Aura.Di dependency injection container)
zendframework/zend-expressive suggests installing zendframework/zend-pimple-config (^1.0 to use Pimple for dependency injection container)
zendframework/zend-code suggests installing doctrine/annotations (Doctrine\Common\Annotations >=1.0 for annotation features)
symfony/console suggests installing psr/log-implementation (For using the console logger)
symfony/console suggests installing symfony/event-dispatcher ()
symfony/console suggests installing symfony/lock ()
symfony/console suggests installing symfony/process ()
filp/whoops suggests installing symfony/var-dumper (Pretty print complex values better with var-dumper available)
filp/whoops suggests installing whoops/soap (Formats errors as SOAP responses)
Writing lock file
Generating autoload files
ocramius/package-versions: Generating version class...
ocramius/package-versions: ...done generating version class
> zf-development-mode enable
You are now in development mode.
- setup db config/autoload/local.php
<?php
// config/autoload/local.php
return [
'db' => [
'username' => 'root',
'password' => '',
'driver' => 'pdo_mysql',
'database' => 'expressive',
'host' => 'localhost',
'driver_options' => [
\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'',
],
],
];
- composer require it
$ composer require samsonasik/error-hero-module
1/2: http://packagist.org/p/provider-latest$cb15031bc52a501c4bc5b397814f257a49a6ea441bb0cd38379658b7f06bc73c.json
2/2: http://packagist.org/p/provider-2016$132f4da511a49a4e012b9f85eb972b1eb93896b9f1a5a29f21ee917cd722c556.json
Finished: success: 2, skipped: 0, failure: 0, total: 2
Using version ^2.12 for samsonasik/error-hero-module
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
1/1: https://codeload.github.com/samsonasik/ErrorHeroModule/legacy.zip/a6279900b9e5ec4877f440446887d1e4b458ccbc
Finished: success: 1, skipped: 0, failure: 0, total: 1
Package operations: 9 installs, 0 updates, 0 removals
- Installing zendframework/zend-text (2.7.0): Loading from cache
- Installing zendframework/zend-mime (2.7.1): Loading from cache
- Installing true/punycode (v2.1.1): Loading from cache
- Installing zendframework/zend-mail (2.10.0): Loading from cache
Please select which config file you wish to inject 'Zend\Mail\ConfigProvider' into:
[0] Do not inject
[1] config/config.php
Make your selection (default is 1):1
Remember this option for other packages of the same type? (Y/n)Y
Installing Zend\Mail\ConfigProvider from package zendframework/zend-mail
- Installing zendframework/zend-log (2.10.0): Loading from cache
Installing Zend\Log\ConfigProvider from package zendframework/zend-log
- Installing zendframework/zend-db (2.9.3): Loading from cache
Installing Zend\Db\ConfigProvider from package zendframework/zend-db
- Installing seld/jsonlint (1.7.1): Loading from cache
- Installing beberlei/assert (v2.9.6): Loading from cache
- Installing samsonasik/error-hero-module (2.12.0): Loading from cache
zendframework/zend-mail suggests installing zendframework/zend-crypt (Crammd5 support in SMTP Auth)
zendframework/zend-log suggests installing ext-mongo (mongo extension to use Mongo writer)
zendframework/zend-log suggests installing zendframework/zend-console (Zend\Console component to use the RequestID log processor)
zendframework/zend-db suggests installing zendframework/zend-hydrator (Zend\Hydrator component for using HydratingResultSets)
samsonasik/error-hero-module suggests installing zendframework/zend-expressive-platesrenderer (^2.0 to be able to use plates template engine in zend-expressive ^3.0)
samsonasik/error-hero-module suggests installing zendframework/zend-expressive-twigrenderer (^2.0 to be able to use twig template engine in zend-expressive ^3.0)
samsonasik/error-hero-module suggests installing zendframework/zend-mvc-console (^1.1 for zend-mvc ^3.0 usage to be able to use Console Controller)
Writing lock file
Generating autoload files
ocramius/package-versions: Generating version class...
ocramius/package-versions: ...done generating version class
- Copy config
cp vendor/samsonasik/error-hero-module/config/expressive-error-hero-module.local.php.dist config/autoload/expressive-error-hero-module.local.php
- Register
ErrorHeroModule\Middleware\Expressive::class
afterErrorHandler::class
:
// config/pipeline.php
$app->pipe(ErrorHandler::class);
$app->pipe(ErrorHeroModule\Middleware\Expressive::class);
- Try "throw Exception()" at HomePageHandler middleware:
public function handle(ServerRequestInterface $request) : ResponseInterface
{
throw new \Exception('test');
}
- I got the error page correctly and recorded to DB:
If removing register of $app->pipe(ErrorHandler::class);
works for you at your application, that's fine as far as it works.
from errorheromodule.
Thanks @samsonasik. I have updated my expressive-error-hero-module.local.php
config file, and after some research I found the following.
First, I am guessing whatever I had in my config did not trigger the module (ErrorHeroModule), so instead ErrorHandler
took over. Removing ErrorHandler
left PHP's native error handling routines, which is what I was seeing.
Second, with ErrorHeroModule I saw that the SQL command being executed was:
INSERT INTO `log` (`date`, ... ) VALUES ('2018-07-03T20:03:18+00:00', ... );
Which gave error of:
ERROR 1292 (22007): Incorrect datetime value: '2018-07-03T20:03:18+00:00' for column 'date' at row 1
After fixing that, I see that:
- The exception being thrown is written into the database log, as per the $config['log']['ErrorHeroModuleLogger']['writers'] option
- but no explicit error was shown on the screen. Instead the generic message about the error is shown.
What I mean by explicit error, is PHP's native output and exactly what is being written to the log. i.e. :
Fatal error: Uncaught Exception: test in C:\Apache24\htdocs\portal\module\App\src\Handler\HomePageHandler.php:38
Stack trace: [30-some lines omitted]
I was expecting to see that level of detail rather than "We have encountered a problem..."
I suspect that it is the expected behavior, and that config data changed slightly from the version I used to use 2.1.3
to 2.12.0
.
from errorheromodule.
- For date format, you can set under options under inside 'db' writers like in issue #41 (comment) , e.g.:
// config/autoload/error-hero-module.local.php
'log' => [
'ErrorHeroModuleLogger' => [
'writers' => [
[
'name' => 'db',
'options' => [
// ... current config
'formatter' => [
'name' => 'db',
'options' => [
'dateTimeFormat' => 'Y-m-d H:i:s',
],
],
// ...
],
],
],
],
],
- For displaying error, you can set the
'display_errors' => 1,
underdisplay-settings
config
from errorheromodule.
Thanks,
formatter
is a useful setting. With the `display_errors it only shows the descriptive error in the error log via the writer.
Setting it to 1 goes back to showing my layout with this non-descriptive error message in browser:
Oops!
This is awkward.We encountered a 500 Internal Server Error error.
setting display_errors
to 0 shows this non-descriptive error in browser:
{
"type": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html",
"title": "Internal Server Error",
"status": 500,
"detail": "We have encountered a problem and we can not fulfill your request. An error report has >been generated and sent to the support team and someone will attend to this problem urgently. Please >try again later. Thank you for your patience."
}
It only shows the descriptive error I was looking for in the database log. Is that the expected behavior?
from errorheromodule.
I think it depends on the type of error. In my case I did not supply enough parameters to a method when the method expected a certain number of them.
With a different type of error, such as having raw output in a Handler, I do see the error messages on the screen. i.e:
EmitterException: Output has been emitted previously; cannot emit response i
Exact behavior probably depends on the type of error.
from errorheromodule.
Related Issues (19)
- mail attachment on upload error HOT 1
- zend-expressive support HOT 1
- trace and request_data always empty HOT 12
- Mqtt enhancement HOT 1
- Exceptions Listeners Priority HOT 3
- Example for MQTT implementation HOT 3
- Ignoring errors suppressed by @ HOT 8
- Wrong format of timestamp HOT 2
- If the Ajax message is used, the HTTP response code shouldn't be 200 HOT 2
- Refactor to allow more fatal error logging HOT 1
- error-hero-module downgrades from 2.16.0 to 2.3.0 when I update beberlei/assert to v3.1.0 HOT 1
- Zend Test - "Test code or tested code did not (only) close its own output buffers" is thrown HOT 6
- display_errors setting being set to 1 does not show errors in browser. HOT 2
- PHP 8 throws Fatal Error in Logging.php when loading a Mezzio page via AJAX HOT 3
- Cannot change layout HOT 3
- enable/disable error-preview page
- Can't update my composer since weeks HOT 6
- excluded errors are not excluded HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from errorheromodule.