如何在Heroku内部的Laravel中缓存配置?即构建在与运行时不同的路径中


How to cache configuration in Laravel inside Heroku? i.e. build in a different path from runtime

在Laravel文档中,建议在生产中运行./artisan config:cache以加快速度。Heroku非常棒,因为每次构建都会带来一个新的文件系统状态,所以我们甚至不必在部署之间清理缓存。

但是:如果你将该命令添加到部署过程中(例如通过Composer),你的Laravel应用程序将开始崩溃,因为它将在现在已经消失的构建路径中寻找文件(类似于/tmp/random_string)。如果运行heroku run pwd,您会注意到运行时应用程序位于/app上。

./artisan config:cache似乎将临时构建路径存储在缓存设置中,而应用程序则在另一个路径中运行。是否可以更改生成的配置缓存中使用的路径?

您最好在启动时而不是在构建时执行此操作。为了做到这一点,您需要修改composer.json以添加:

"warmup": [
    "php artisan config:cache",
    "php artisan route:cache"
],

然后将您的procfile修改为类似web: composer warmup && $(composer config bin-dir)/heroku-php-apache2 public/ 的文件

这条消息的功劳归于Heroku支持的David!