1

我们在一个 Docker 容器下运行 Laravel,其入口点(启动脚本)如下:

chmod a+w -R storage \
             bootstrap/cache \
             public/img

php artisan storage:link
php artisan config:cache
php artisan horizon:publish
php artisan horizon &

/usr/sbin/php-fpm7.3 -O

问题是有时,当容器启动时,每个请求都会抛出 HTTP 500。但是,在其他一些部署期间,容器会正常启动并按应有的方式处理请求。而且,当抛出 HTTP 500 错误时,只需要几分钟,然后请求就会被正常处理。发回此 HTTP 500 状态时,将显示以下错误:

NOTICE: PHP message: PHP Fatal error:  Uncaught ReflectionException: Class view does not exist in /home/vendor/laravel/framework/src/Illuminate/Container/Container.php:877
Stack trace:
172.20.0.2 -  01/Nov/2021:10:18:30 +0000 "GET /index.php" 500
#0 /home/vendor/laravel/framework/src/Illuminate/Container/Container.php(877): ReflectionClass->__construct('view')
#1 /home/vendor/laravel/framework/src/Illuminate/Container/Container.php(758): Illuminate\Container\Container->build('view')
#2 /home/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(841): Illuminate\Container\Container->resolve('view', Array, true)
#3 /home/vendor/laravel/framework/src/Illuminate/Container/Container.php(694): Illuminate\Foundation\Application->resolve('view', Array)
#4 /home/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(826): Illuminate\Container\Container->make('view', Array)
#5 /home/vendor/laravel/framework/src/Illuminate/Container/Container.php(1423): Illuminate\Foundation\Application->make('view')
#6 /home/vendor/laravel/framework/src/Illuminate/Sup...

在谷歌搜索此错误时,许多人指出 Composer 自动加载配置错误。但是,在我们的案例中,重启容器有时会解决问题,所以我认为可以排除这个原因。我唯一的猜测是,可能是 Horizo​​n 和 php-fpm7.3 命令通过竞争条件相互冲突,但我不明白它们为什么会以及为什么会触发这些错误。

4

0 回答 0