В документах 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!
Других решений пока нет …