Ampliar tamanho máximo de arquivo permitido no Heroku ao utilizar Laravel/PHP

Problema ao enviar arquivos maiores que 1MB? Normalmente você cogita ser código, mas é fundamental garantir que o servidor está de acordo com seus requisitos.

Tiago Boeing
2 min readOct 5, 2018
DEV Community

Ao programar uma aplicação utilizando Laravel para desenvolver a API REST como backend, eis um problema… As requisições chegam, o arquivo é enviado corretamente no formData do Angular, mas nada de o bendito ser salvo no S3 (ou no diretório de arquivos, pode ser seu caso).

O que tá acontecendo? Como assim?

Pois bem, lá vou eu no frontend realizar testes, mudar um pouco as chamadas da API e… NADA. Resolvo então averiguar com testes mais diretos, vamos tirar o frontend da jogada.

Como? Vamos ao Postman testar somente o backend! Lá se vão alguns minutos e algumas requisições.

Postman? WTF! — basicamente, uma aplicação que permite enviar e receber dados via requisições HTTP. Em português, você chama a API por ele sem precisar escrever código.

Validei todo o código e não encontrei erros. Resolvi então levantar todas as variáveis da questão a ser solucionada e parar de pensar de forma tão complexa, voltando para a base:

Perdemos tanto tempo pensando de forma complexa e acabamos ignorando que o problema poderia estar do lado do servidor/ferramenta de deploy.

Afinal, qual o problema?

Simples até demais, cheguei a não acreditar ter cometido este erro. (Literalmente erro bem principiante), de tanto repetir tarefas acabamos deduzindo que tudo já está como a aplicação anterior.

Configure as diretivas upload_max_filesize e post_max_size do PHP!

Vou deduzir que você não alterou a raiz do Laravel e ela continua sendo a pasta /public

Crie um arquivo dentro de /public chamado de .user.ini e tenha o seguinte conteúdo nele:

Aí está o básico, coloquei configurações bem extravagantes só para testes.

Vale lembrar que, post_max_size deve ser maior ou igual ao valor que você definir no upload_max_filesize.

Não tem certeza se a raiz é /public?

Procure na pasta do projeto um arquivo chamado Procfile e certifique que há esta linha:

web: vendor/bin/heroku-php-apache2 public/

Este arquivo basicamente informa o Heroku como o deploy da aplicação deve ser realizado, neste caso utilizando um Node/Container destinado ao PHP. A raiz do seu projeto está sendo informada logo após apache2, ou seja public/

Documentação de apoio

--

--

Tiago Boeing

🇧🇷 Staff Software Engineer | AWS Community Builder | ⌨ Works at one of the biggest health insurance companies in Brazil | @tiagoboeing