Heroku, доступ к папке для хранения Laravel - PullRequest
0 голосов
/ 29 апреля 2018

Когда кнопка нажата, предполагается открыть файл "resume.pdf" на пустой странице. Он хорошо работает с localhost, но когда он выполняется на heroku, он не проходит хорошо. Я думаю, что путь неправильный, но я понятия не имею, какой путь должен быть.

composer.json

"post-install-cmd": [
  "php artisan clear-compiled",
  "php artisan optimize",
  "chmod -R 775 public/",
  "chmod -R 775 storage/"
],

index.php

<a class="btn btn-xl btn-outline-light" href="storage/resume.pdf" target="_blank">
    <i class="fa fa-folder-open-o mr-2"></i>
    View Resume!
</a>

Доступ к локальному хосту

Доступ к Herokuapp

1 Ответ

0 голосов
/ 29 апреля 2018

Итак, этот ответ состоит из двух частей.

Во-первых, storage не является общедоступным по умолчанию. По документам :

Чтобы сделать их доступными из Интернета, вы должны создать символическую ссылку из public / storage в storage / app / public. Это соглашение будет хранить ваши общедоступные файлы в одном каталоге, который может быть легко распространен между развертываниями при использовании систем развертывания с нулевым временем простоя, таких как Envoyer.

(Возможно, вы сделали это локально один раз, но забыли. Или на локальном сервере заканчивается основная папка приложения вместо подпапки public.)

НО ...

В Heroku файловая система эфемерна. Он не является постоянным. Файлы, которые вы храните в экземпляре, могут уйти в в любое время . Если вы выполните новое развертывание или увеличите / уменьшите масштаб. или если Heroku необходимо перезапустить / заменить экземпляр, все файлы, загруженные пользователями на storage, уничтожены .

Вместо этого вы захотите хранить пользовательские загрузки где-нибудь, например, в Amazon S3, что упрощает Laravel. После того, как вы настроили свои ключи S3, вы можете просто сделать что-то вроде Storage::disk('s3') для работы с S3 вместо локального диска, который скоро будет удален.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...