ResolvendoThis is awkward / 404 Not Found errorapós instalação dozend-expressive

Trabalhando com Middleware, neste Post vamos resolver o problema deThis is awkward / 404 Not Found errorapós instalação dozend-expressive”.

проблема

Recentemente, interessado em ver como os Middleware funcionam, fiz a instalação dozend-expressive-skeletonconforme o Guia Quick Start: Using the Skeleton + Installer:

$ composer create-project zendframework/zend-expressive-skeleton expressive

Осыдан кейін, para checar o resultado, acessei o navegador no endereço http://localhost/expressive/public/ e peguei o seguinte erro:

Oops!
This is awkward.
 
We encountered a 404 Not Found error.
 
You are looking үшін something that doesn't exist or may have moved. Check out one of the links on this page or head back to Home.

шешім

A mensagem de erro indicava que a página não tinha sido encontrada, сондықтан, parecia um problema de PATH (caminho) para os arquivos da aplicação.

Dando uma olhada por aí, cheguei a conclusão que isto aconteceu por eu não ter criado o projeto diretamente na raiz do diretório de publicação (Ex: www/ ou htdocs/), mas em um subdiretório, desse jeito: http://localhost/expressive/public/.

сайып келгенде,, parece que o Expressive tem alguma dificuldade com Base Url / Base Path. Na verdade a própria arquitetura do Zend Framework convenciona que o diretório de publicação deve ser opublic/“, tanto que se você rodar o servidor Web apontando parapublic/“, a aplicação funciona normalmente.

Rodando o comandophp -S 0.0.0.0:8080 -t public/pelo terminal (бұйрық):

Taylor@taylor-pc MINGW64 /c/wamp64/www/expressive
$ php -S 0.0.0.0:8080 -t public/
PHP 7.0.10 Development Server started at Thu Aug 10 15:55:00 2017
Listening on http://0.0.0.0:8080
Document root is C:\wamp64\www\expressive\public
Press Ctrl-C to quit.
[Thu Aug 10 15:55:34 2017] 127.0.0.1:65106 [404]: /expressive/public/

қазір иә, fazendo isto é possível acessar http://localhost/expressive/public/ sem qualquer erro.

Mas para não ficar nessa de sempre apontar parapublic/“, existe o Middleware los/basepath como solução de contorno. Орнату қарапайым:

$ composer require los/basepath

Осыдан кейін, basta adicionar o Middleware como um dos primeiros na sua aplicação. Мысалы, eu coloquei a chamada no arquivopublic\index.php”, logo após “$қолданба” ter sido inicializada:

1
$қолданба->pipe(new \LosMiddleware\BasePath\BasePath('/expressive/public'));

Міне бітті!

Referência

Access /path/to/public got 404 page
Base Path Middleware for PHP

Барлықәрекеттер: 568

Шолу жөніндегі “ResolvendoThis is awkward / 404 Not Found errorapós instalação dozend-expressive

Пікір қалдыру

Сіздің электрондық пошта мекенжайы емес жарияланады. Міндетті өрістер таңбаланған *