Laravel Forge/Envoyer 自升级到 5.5 后使用旧版本

Laravel Forge/Envoyer using old releases since upgrading to 5.5

自升级到 Laravel 5.5 后,我遇到了非常奇怪的行为,在使用 Envoyer 成功部署后,网站将继续显示旧版本。

current 文件夹已正确设置为最新版本,但站点仍显示旧版本。

如果手动删除旧版本文件夹,或者通过部署足够多次删除,整个站点将崩溃,并显示为:

Warning: include(/home/forge/sitefoo.com/envoyer/releases/20180130124512/vendor/composer/../vlucas/phpdotenv/src/Exception/InvalidPathException.php): failed to open stream: No such file or directory in /home/forge/sitefoo.com/envoyer/releases/20180130124512/vendor/composer/ClassLoader.php on line 444

Warning: include(): Failed opening '/home/forge/sitefoo.com/envoyer/releases/20180130124512/vendor/composer/../vlucas/phpdotenv/src/Exception/InvalidPathException.php' for inclusion (include_path='.:/usr/share/php') in /home/forge/sitefoo.com/envoyer/releases/20180130124512/vendor/composer/ClassLoader.php on line 444

Warning: include(/home/forge/sitefoo.com/envoyer/releases/20180130124512/vendor/composer/../symfony/debug/Exception/FatalThrowableError.php): failed to open stream: No such file or directory in /home/forge/sitefoo.com/envoyer/releases/20180130124512/vendor/composer/ClassLoader.php on line 444

Warning: include(): Failed opening '/home/forge/sitefoo.com/envoyer/releases/20180130124512/vendor/composer/../symfony/debug/Exception/FatalThrowableError.php' for inclusion (include_path='.:/usr/share/php') in /home/forge/sitefoo.com/envoyer/releases/20180130124512/vendor/composer/ClassLoader.php on line 444

Fatal error: Uncaught Error: Class 'Symfony\Component\Debug\Exception\FatalThrowableError' not found in /home/forge/sitefoo.com/envoyer/releases/20180130124512/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:122 Stack trace: #0 /home/forge/sitefoo.com/envoyer/releases/20180130124512/public/index.php(53): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request)) #1 {main} thrown in /home/forge/sitefoo.com/envoyer/releases/20180130124512/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php on line 122

删除旧文件夹后重新启动服务器后,一切都会恢复正常,并且会使用正确的版本。

有没有人知道出了什么问题或如何解决这个问题?

谢谢

根据我的阅读,这似乎与队列侦听器有关,特别是当它不是 运行 作为守护程序时。修复似乎是将 Forge 中的队列处理器设置为守护进程。

另外更改工作配方以在队列重新启动之前清除缓存:

// change php version to yours
sudo service php7.1-fpm reload
// clear cache
php artisan queue:restart

此问题的解决方案是在 Envoyer 中更新服务器的 PHP 版本。

更新到Laravel 5.5后,服务器也更新到PHP 7.2。这从未在 Envoyer 服务器的设置中设置,因此导致问题,可能使用旧的 PHP-FPM 版本。