daws “Qhov no yog ua tau txawv txawv / 404 Tsis pom kev ua yuam kev” tom qab installation “Zend-kev paub qhia lo”

Ua hauj lwm nrog middleware, Rooj vag no yuav daws tau qhov teeb meem ntawm “Qhov no yog ua tau txawv txawv / 404 Tsis pom kev ua yuam kev” tom qab installation “Zend-kev paub qhia lo”.

teeb meem

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-kev paub qhia lo-skeleton expressive

tom qab no, para checar o resultado, acessei o navegador no endereço http://localhost/expressive/public/ e peguei o seguinte erro:

Oops!
Qhov no yog ua tau txawv txawv.
 
We encountered a 404 Tsis pom kev ua yuam kev.
 
You are looking rau something that doesn't exist or may have moved. Check out one of the links on this page or head back to Home.

tshuaj

A mensagem de erro indicava que a página não tinha sido encontrada, yog li ntawd, 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/kev paub qhia lo/public/.

thaum kawg, 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 (hais kom ua):

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/

tam sim no yog, 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. A instalação é simples:

$ composer require los/basepath

tom qab no, basta adicionar o Middleware como um dos primeiros na sua aplicação. Por exemplo, eu coloquei a chamada no arquivopublic\index.php”, logo após “$app ter sido inicializada:

1
$app->pipe(tshiab \LosMiddleware\BasePath\BasePath('/expressive/public'));

Tus ntawd yog nws!

Referência

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

Tag nrho cov accesses: 571

Um comentário sobredaws “Qhov no yog ua tau txawv txawv / 404 Tsis pom kev ua yuam kev” tom qab installation “Zend-kev paub qhia lo”

Sau ntawv cia Ncua

Koj email chaw nyob yuav tsis tsum luam tawm. Yuav tsum tau teb cov cim nrog *