Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

publicar api symfony no heroku

Boa tarde, segui os passos para publicar symfony em heroku do link:

https://devcenter.heroku.com/articles/deploying-symfony4#prerequisites.

Mas, quando abro o app no heroku, ele apresenta a msg quando abro o app no heroku:

Sorry, the page you are looking for could not be found. Segue a lista de passos que executei:

composer create-project symfony/skeleton hero/

composer require symfony/apache-pack

echo "# hero" >> README.md

git init git add .

git commit -m "first commit"

git remote add origin https://github.com/vicnet81/hero.git

git push -u origin master

heroku create

echo 'web: heroku-php-apache2 public/' > Procfile

heroku config:set APP_ENV=prod

Substituir em public/index.php:

if ($trustedProxies = $SERVER['TRUSTEDPROXIES'] ?? $ENV['TRUSTEDPROXIES'] ?? false) { Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST); }

Por:

$trustedProxies = $SERVER['TRUSTEDPROXIES'] ?? $ENV['TRUSTEDPROXIES'] ?? false; $trustedProxies = $trustedProxies ? explode(',', $trustedProxies) : []; if($SERVER['APPENV'] == 'prod') $trustedProxies[] = $SERVER['REMOTEADDR']; if($trustedProxies) { Request::setTrustedProxies($trustedProxies, Request::HEADER_X_FORWARDED_AWS_ELB); }

git add .

git commit -m "heroku"

git push heroku master

heroku open

Estou com:

  • Windows 10
  • PHP 7.3.8,
  • git version 2.22.0.windows.1
  • heroku/7.29.0 win32-x64 node-v11.14.0

Qual seria o problema?

2 respostas

Olá, Vicente!

Então, cara, eu não sei usar Apache. Só uso Nginx.

Eu utilizo o seguinte Procfile:

web: vendor/bin/heroku-php-nginx -C nginx.conf public/

E tenho o arquivo chamado nginx.conf com o seguinte conteúdo:

location / {
    # try to serve file directly, fallback to rewrite
    try_files $uri @rewriteapp;
}

location @rewriteapp {
    # rewrite all to app.php
    rewrite ^(.*)$ /index.php/$1 last;
}

location ~ ^/\.php(/|$) {
    try_files @heroku-fcgi @heroku-fcgi;
    internal;
}
solução!

Acredito que descobri o problema. Eu estava apenas testando o heroku com um projeto symfony vazio. Em ambiente local ele apresenta uma página de boas vindas, mas quando eu transferia para o heroku ele apresentava apenas uma mensagem (Not Found). Verifiquei o status da página de boas vindas do projeto vazio em ambiente local e verifiquei que era o mesmo 404(Not Found). Então criei um simples Controller e define uma rota e o projeto funcionou como esperado tanto localmente como no heroku. Só não entendi porque a página a ser exibida não foi a mesma para ambas as situações.