Closed smknstd closed 2 years ago
@smknstd I will need you to send me the full error output.
Hello @nunomaduro ! This is all I got unfortunately it seems truncated or something in nginx logs for some reason ...
Are you running the latest version of monolog? Do you mind upgrading that package?
I think it is the last version. From composer lock:
{
"name": "monolog/monolog",
"version": "2.3.5",
I encountered the same error in our staging environment this morning after upgrading to framework version v8.83.1
.
Could not get it to trigger locally though.
Rolling back to v8.83.0
did not solve it though.
monolog versions: 2.3.5
We use LOG_DEPRECATIONS_CHANNEL=stderr
@smknstd Do you have Sentry or some other exception handling service? Trying to guess if that has any effect
Great point ! Yes, we have getsentry/sentry-laravel 2.11.0
Can you share the full "logging.php" file?
This is our config/logging.php
<?php
use Monolog\Handler\StreamHandler;
return [
'default' => env('LOG_CHANNEL', 'stderr'),
'deprecations' => env('LOG_DEPRECATIONS_CHANNEL', 'stderr'),
'channels' => [
// Should be used for docker
'stderr' => [
'driver' => 'monolog',
'handler' => StreamHandler::class,
'formatter' => env('LOG_STDERR_FORMATTER'),
'tap' => [
\App\Logging\AddAmznTraceIdContext::class,
\App\Logging\AddRecruiterIdContext::class,
],
'level' => env('LOG_LEVEL', 'debug'),
'with' => [
'stream' => 'php://stderr',
],
],
],
];
@hmazter Can't reproduce your issue. But aren't you missing an emergency
channel there?
I'd also recommend against modifying the logging.php file like that. It's best that you leave the defaults in place.
There was no emergency
when we created the app back in Laravel 6.
And it has worked, probably since the emergency logger has a fallback in the code
https://github.com/laravel/framework/blob/7ba34a8aa63a36601df9b301e96937b103be363b/src/Illuminate/Log/LogManager.php#L173-L178
@hmazter you should always update config files when upgrading Laravel versions. Tools like Laravel Shift can greatly help with this.
@hmazter Can you create the emergency
channel and let me know how it goes @hmazter ?
And unfortunately, I can't reproduce it locally either, so I have no way to inspect what the initial exception is.
you should always update config files when upgrading Laravel versions. Tools like Laravel Shift can greatly help with this.
Totally agree with you. Only that the config for the emergency logger, in this case, is what is the default in the code any way.
But I'll add the emergency logger and test.
here is the whole config/logging.php
:
<?php
return [
/*
|--------------------------------------------------------------------------
| Default Log Channel
|--------------------------------------------------------------------------
|
| This option defines the default log channel that gets used when writing
| messages to the logs. The name specified in this option should match
| one of the channels defined in the "channels" configuration array.
|
*/
'default' => env('LOG_CHANNEL', 'stack'),
/*
|--------------------------------------------------------------------------
| Log Channels
|--------------------------------------------------------------------------
|
| Here you may configure the log channels for your application. Out of
| the box, Laravel uses the Monolog PHP logging library. This gives
| you a variety of powerful log handlers / formatters to utilize.
|
| Available Drivers: "single", "daily", "slack", "syslog",
| "errorlog", "custom", "stack"
|
*/
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['daily', 'sentry'],
'name' => 'laravel'
],
'single' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
],
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
'days' => 7,
],
'slack' => [
'driver' => 'slack',
'url' => env('LOG_SLACK_WEBHOOK_URL'),
'username' => 'Laravel Log',
'emoji' => ':boom:',
'level' => 'critical',
],
'syslog' => [
'driver' => 'syslog',
'level' => 'debug',
],
'errorlog' => [
'driver' => 'errorlog',
'level' => 'debug',
],
'sentry' => [
'driver' => 'sentry',
'level' => env('SENTRY_LOG_LEVEL', 'error')
],
'php_deprecation_warnings' => [
'driver' => 'single',
'path' => storage_path('logs/php-deprecation-warnings.log'),
],
],
'deprecations' => env('LOG_DEPRECATIONS_CHANNEL', 'null'),
];
Did a deploy with this config (changed the path for emergency logger since I'm running in docker/AWS ECS and storage_path
is not writable)
<?php
use Monolog\Handler\NullHandler;
use Monolog\Handler\StreamHandler;
use Monolog\Handler\SyslogUdpHandler;
return [
/*
|--------------------------------------------------------------------------
| Default Log Channel
|--------------------------------------------------------------------------
|
| This option defines the default log channel that gets used when writing
| messages to the logs. The name specified in this option should match
| one of the channels defined in the "channels" configuration array.
|
*/
'default' => env('LOG_CHANNEL', 'stack'),
/*
|--------------------------------------------------------------------------
| Deprecations Log Channel
|--------------------------------------------------------------------------
|
| This option controls the log channel that should be used to log warnings
| regarding deprecated PHP and library features. This allows you to get
| your application ready for upcoming major versions of dependencies.
|
*/
'deprecations' => env('LOG_DEPRECATIONS_CHANNEL', 'stderr'),
/*
|--------------------------------------------------------------------------
| Log Channels
|--------------------------------------------------------------------------
|
| Here you may configure the log channels for your application. Out of
| the box, Laravel uses the Monolog PHP logging library. This gives
| you a variety of powerful log handlers / formatters to utilize.
|
| Available Drivers: "single", "daily", "slack", "syslog",
| "errorlog", "monolog",
| "custom", "stack"
|
*/
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['single'],
'ignore_exceptions' => false,
],
'single' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => env('LOG_LEVEL', 'debug'),
],
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => env('LOG_LEVEL', 'debug'),
'days' => 14,
],
'slack' => [
'driver' => 'slack',
'url' => env('LOG_SLACK_WEBHOOK_URL'),
'username' => 'Laravel Log',
'emoji' => ':boom:',
'level' => env('LOG_LEVEL', 'critical'),
],
'papertrail' => [
'driver' => 'monolog',
'level' => env('LOG_LEVEL', 'debug'),
'handler' => SyslogUdpHandler::class,
'handler_with' => [
'host' => env('PAPERTRAIL_URL'),
'port' => env('PAPERTRAIL_PORT'),
],
],
// Should be used for docker
'stderr' => [
'driver' => 'monolog',
'level' => env('LOG_LEVEL', 'debug'),
'handler' => StreamHandler::class,
'formatter' => env('LOG_STDERR_FORMATTER'),
'tap' => [
\App\Logging\AddAmznTraceIdContext::class,
\App\Logging\AddRecruiterIdContext::class,
],
'with' => [
'stream' => 'php://stderr',
],
],
'syslog' => [
'driver' => 'syslog',
'level' => env('LOG_LEVEL', 'debug'),
],
'errorlog' => [
'driver' => 'errorlog',
'level' => env('LOG_LEVEL', 'debug'),
],
'null' => [
'driver' => 'monolog',
'handler' => NullHandler::class,
],
'emergency' => [
'path' => sys_get_temp_dir() . '/emergency.log',
],
],
];
And I'm getting this stacktrace
Error: Class "Monolog\Handler\StreamHandler" not found
#62 /vendor/laravel/framework/src/Illuminate/Log/LogManager.php(175): Illuminate\Log\LogManager::createEmergencyLogger
#61 /vendor/laravel/framework/src/Illuminate/Log/LogManager.php(129): Illuminate\Log\LogManager::get
#60 /vendor/laravel/framework/src/Illuminate/Log/LogManager.php(112): Illuminate\Log\LogManager::driver
#59 /vendor/laravel/framework/src/Illuminate/Log/LogManager.php(101): Illuminate\Log\LogManager::channel
#58 /vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(101): Illuminate\Foundation\Bootstrap\HandleExceptions::handleDeprecation
#57 /vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(72): Illuminate\Foundation\Bootstrap\HandleExceptions::handleError
#56 /vendor/composer/ClassLoader.php(571): include
#55 /vendor/composer/ClassLoader.php(571): Composer\Autoload\includeFile
#54 /vendor/composer/ClassLoader.php(428): Composer\Autoload\ClassLoader::loadClass
#53 /vendor/laravel/framework/src/Illuminate/Log/LogManager.php(175): Illuminate\Log\LogManager::createEmergencyLogger
#52 /vendor/laravel/framework/src/Illuminate/Log/LogManager.php(129): Illuminate\Log\LogManager::get
#51 /vendor/laravel/framework/src/Illuminate/Log/LogManager.php(112): Illuminate\Log\LogManager::driver
#50 /vendor/laravel/framework/src/Illuminate/Log/LogManager.php(590): Illuminate\Log\LogManager::error
#49 /vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(261): Illuminate\Support\Facades\Facade::__callStatic
#48 /app/Exceptions/Sentry.php(24): App\Exceptions\Sentry::captureException
#47 /app/Exceptions/Handler.php(36): App\Exceptions\Handler::App\Exceptions\{closure}
#46 [internal](0): call_user_func
#45 /vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/ReportableHandler.php(45): Illuminate\Foundation\Exceptions\ReportableHandler::__invoke
#44 /vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(235): Illuminate\Foundation\Exceptions\Handler::report
#43 /vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(49): Illuminate\Routing\Pipeline::handleException
#42 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(172): Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
#41 /vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Session\Middleware\StartSession::handleStatefulRequest
#40 /vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Session\Middleware\StartSession::handle
#39 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
#38 /vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::handle
#37 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
#36 /vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\Cookie\Middleware\EncryptCookies::handle
#35 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
#34 /app/Http/Middleware/AsyncFormRedirect.php(19): App\Http\Middleware\AsyncFormRedirect::handle
#33 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
#32 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline::then
#31 /vendor/laravel/framework/src/Illuminate/Routing/Router.php(723): Illuminate\Routing\Router::runRouteWithinStack
#30 /vendor/laravel/framework/src/Illuminate/Routing/Router.php(698): Illuminate\Routing\Router::runRoute
#29 /vendor/laravel/framework/src/Illuminate/Routing/Router.php(662): Illuminate\Routing\Router::dispatchToRoute
#28 /vendor/laravel/framework/src/Illuminate/Routing/Router.php(651): Illuminate\Routing\Router::dispatch
#27 /vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(167): Illuminate\Foundation\Http\Kernel::Illuminate\Foundation\Http\{closure}
#26 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
#25 /vendor/sentry/sentry-laravel/src/Sentry/Laravel/Http/SetRequestIpMiddleware.php(45): Sentry\Laravel\Http\SetRequestIpMiddleware::handle
#24 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
#23 /vendor/sentry/sentry-laravel/src/Sentry/Laravel/Http/SetRequestMiddleware.php(42): Sentry\Laravel\Http\SetRequestMiddleware::handle
#22 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
#21 /app/Http/Middleware/UserResponseHeaderMiddleware.php(16): App\Http\Middleware\UserResponseHeaderMiddleware::handle
#20 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
#19 /app/Http/Middleware/InstrumentationMiddleware.php(21): App\Http\Middleware\InstrumentationMiddleware::handle
#18 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
#17 /vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Foundation\Http\Middleware\TransformsRequest::handle
#16 /vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::handle
#15 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
#14 /vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Foundation\Http\Middleware\TransformsRequest::handle
#13 /vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\Foundation\Http\Middleware\TrimStrings::handle
#12 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
#11 /vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Foundation\Http\Middleware\ValidatePostSize::handle
#10 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
#9 /vendor/fruitcake/laravel-cors/src/HandleCors.php(38): Fruitcake\Cors\HandleCors::handle
#8 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
#7 /vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance::handle
#6 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
#5 /vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\Http\Middleware\TrustProxies::handle
#4 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
#3 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline::then
#2 /vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(142): Illuminate\Foundation\Http\Kernel::sendRequestThroughRouter
#1 /vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\Foundation\Http\Kernel::handle
#0 /public/index.php(52): null
And the exception line is this: https://github.com/laravel/framework/blob/29bc8779103909ebc428478b339ee6fa8703e193/src/Illuminate/Log/LogManager.php#L175
I'm sorry I don't have more info to work with.
Wild speculation, bit seems that the first call to createEmergencyLogger
tries to autoload StreamHandler (#54-#56
in the stacktrace) and that causes the new exception with StreamHandler not found
.
So, something breaks during autoload?
Just a note, I get the same behavior even if I'm removing the calls to Sentry. And I did not think that was the problem since the exceptions got reported as expected to Sentry.
This is the shorter stack trace that is dumped by the server
NOTICE: PHP message: PHP Fatal error: Uncaught Error: Class "Monolog\Handler\StreamHandler" not found in /application/vendor/laravel/framework/src/Illuminate/Log/LogManager.php:175
#0 /application/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(129): Illuminate\Log\LogManager->createEmergencyLogger()
#1 /application/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(112): Illuminate\Log\LogManager->get()
#2 /application/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(101): Illuminate\Log\LogManager->driver()
#3 /application/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(101): Illuminate\Log\LogManager->channel()
#4 /application/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(72): Illuminate\Foundation\Bootstrap\HandleExceptions->handleDeprecation()
#5 /application/vendor/composer/ClassLoader.php(571): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError()
#6 /application/vendor/composer/ClassLoader.php(571): include('...')
#7 /application/vendor/composer/ClassLoader.php(428): Composer\Autoload\includeFile()
#8 /application/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(175): Composer\Autoload\ClassLoader->loadClass()
#9 /application/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(129): Illuminate\Log\LogManager->createEmergencyLogger()
#10 /application/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(112): Illuminate\Log\LogManager->get()
#11 /application/vendor/laravel/framework/src/Illuminate/Log/LogManager.php(590): Illuminate\Log\LogManager->driver()
#12 /application/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(252): Illuminate\Log\LogManager->error()
#13 /application/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(162): Illuminate\Foundation\Exceptions\Handler->report()
#14 /application/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(204): Illuminate\Foundation\Bootstrap\HandleExceptions->handleException()
#15 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->handleShutdown()
#16 {main}
thrown in /application/vendor/laravel/framework/src/Illuminate/Log/LogManager.php on line 175
I don't have a way to reproduce this. I propose that we wait a little bit more, until we have other people with the same issue (if any..) and maybe they are able to provide us a way to reproduce this.
Meanwhile, if you are able to understand what's happening, let me know.
Not sure whether to report here in this closed report. But since @nunomaduro waited for other people to respond - and the label on this issue is "needs more info" - I'll add my finding.
we're running Laravel in kubernetes in production and got around 90k of errors in sentry a few hours ago.
Most of these errors (but not solely) occurred on the livenessProbe
which points to /api/v1/simple-status
which is just a simple json response.
final class StatusController extends Controller
{
...
public function simpleStatus(): JsonResponse
{
return $this->response->json([
'status' => self::STATUS_OK,
]);
}
Running:
php
: 8.1.4
laravel/framework
v8.83.6
monolog/monolog
2.4.0
There's little more information why this error would have occurred. Since the pods have been killed by kubernetes any other logs which might have ended up in laravel.log
(due to the emergency logger) are gone
*fyi: here the same error is reported: https://github.com/laravel/framework/issues/41070 with the notice This will be fixed in the next patch release.
And a few of the stacktraces:
Is there anyone with more information regarding this? we're burning through hundreds of thousand of errors in Sentry, effectively nuking our budget.
So far there's absolutely no indication what might cause this behaviour. But some (but not all) sites we deploy with a release containing php 8.1, that site also starts generating numerous errors
within one hour 72.000 errors occurred from one single application on an api endpoint solely returning a static json response with this stacktrace:
Error: Class "Monolog\Handler\StreamHandler" not found
#36 /vendor/laravel/framework/src/Illuminate/Log/LogManager.php(175): Illuminate\Log\LogManager::createEmergencyLogger
#35 /vendor/laravel/framework/src/Illuminate/Log/LogManager.php(129): Illuminate\Log\LogManager::get
#34 /vendor/laravel/framework/src/Illuminate/Log/LogManager.php(112): Illuminate\Log\LogManager::driver
#33 /vendor/laravel/framework/src/Illuminate/Log/LogManager.php(101): Illuminate\Log\LogManager::channel
#32 /vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(104): Illuminate\Foundation\Bootstrap\HandleExceptions::handleDeprecation
#31 /vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(71): Illuminate\Foundation\Bootstrap\HandleExceptions::handleError
#30 /vendor/composer/ClassLoader.php(571): include
#29 /vendor/composer/ClassLoader.php(571): Composer\Autoload\includeFile
#28 /vendor/composer/ClassLoader.php(428): Composer\Autoload\ClassLoader::loadClass
#27 /vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php(26): include
#26 /vendor/composer/ClassLoader.php(571): Composer\Autoload\includeFile
#25 /vendor/composer/ClassLoader.php(428): Composer\Autoload\ClassLoader::loadClass
#24 /vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php(27): include
#23 /vendor/composer/ClassLoader.php(571): Composer\Autoload\includeFile
#22 /vendor/composer/ClassLoader.php(428): Composer\Autoload\ClassLoader::loadClass
#21 /vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php(26): include
#20 /vendor/composer/ClassLoader.php(571): Composer\Autoload\includeFile
#19 /vendor/composer/ClassLoader.php(428): Composer\Autoload\ClassLoader::loadClass
#18 /vendor/laravel/framework/src/Illuminate/Log/LogManager.php(175): Illuminate\Log\LogManager::createEmergencyLogger
#17 /vendor/laravel/framework/src/Illuminate/Log/LogManager.php(129): Illuminate\Log\LogManager::get
#16 /vendor/laravel/framework/src/Illuminate/Log/LogManager.php(112): Illuminate\Log\LogManager::driver
#15 /vendor/laravel/framework/src/Illuminate/Log/LogManager.php(590): Illuminate\Log\LogManager::error
#14 /vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(252): Illuminate\Foundation\Exceptions\Handler::report
#13 /app/Exceptions/Handler.php(88): App\Exceptions\Handler::report
#12 /vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(49): Illuminate\Routing\Pipeline::handleException
#11 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(172): Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
#10 /vendor/sentry/sentry-laravel/src/Sentry/Laravel/Http/SetRequestMiddleware.php(42): Sentry\Laravel\Http\SetRequestMiddleware::handle
#9 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
#8 /vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Foundation\Http\Middleware\TransformsRequest::handle
#7 /vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\Foundation\Http\Middleware\TrimStrings::handle
#6 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
#5 /vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Foundation\Http\Middleware\ValidatePostSize::handle
#4 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Pipeline\Pipeline::Illuminate\Pipeline\{closure}
#3 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline::then
#2 /vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(142): Illuminate\Foundation\Http\Kernel::sendRequestThroughRouter
#1 /vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\Foundation\Http\Kernel::handle
#0 /public/index.php(38): null
It seems to be related to a bug in php's opcache: https://github.com/php/php-src/issues/8164
Will leave a comment there tomorrow
Hey @Levivb, I've been chasing my tail trying to solve this same issue for 4 days now. Seen a few of your comments elsewhere about this, sure has been a fun one to debug π Did you have any luck trying this with 8.1.6 RC1?
For anyone else who comes across this, it's definitely a PHP opcache bug β I've stumbled across 5 or 6 different discussions from various PHP projects all reporting similar issues, nobody seems able to solve it, but all the clues point back to the opcache. I had no idea what the error even was at first, as no logs were being written (emergency logger unavailable due to the faulty opcache resolution). I only found out after installing New Relic which was able to hook in at a lower level (though their telemetry client seems to be affected by this for many people too: https://github.com/newrelic/newrelic-php-agent/issues/387 )
Supposedly PHP 8.1.6 fixes this via https://github.com/php/php-src/pull/8297 β I think it's due to be released properly on May 12th.
@nunomaduro β hopefully 8.1.6 can be made available as a patch upgrade on Laravel Forge ASAP once released? Not sure how long minor versions normally take to become available, but it would be much appreciated π€ Thank you!
Hey @JackWH yea, got quite an amount of time into tracking this thing π
. Most of the currently relevant information is stowed away in the thread at https://github.com/php/php-src/issues/8164. It just so happens that I posted in there earlier today stating I would try out 8.1.6RC1
. Currently running 8.1.6RC1-fpm
in one of the sites in production which as of yet hasn't gone haywire π€ (although it might take a couple of days).
Description:
When trying to use deprecation logging feature, some of my endpoint crashes with error 500 and nothing is catched in laravel's logs. I found this in
/var/log/nginx/myproject-error.log
:It looks pretty similar to https://github.com/laravel/framework/pull/39938
Steps To Reproduce:
in config/logging.php :
in .env :