Επίλυση “Αυτό είναι άβολο. / 404 Δεν βρέθηκε σφάλμα” μετά την εγκατάσταση του “zend-εκφραστική”

Εργασία με το ενδιάμεσο λογισμικό, σε αυτό το Post θα λύσουμε το πρόβλημα της “Αυτό είναι άβολο. / 404 Δεν βρέθηκε σφάλμα” μετά την εγκατάσταση του “zend-εκφραστική”.

Το πρόβλημα

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-Εκφραστική-skeleton expressive

Μετά από αυτό, para checar o resultado, acessei o navegador no endereço http://localhost/expressive/public/ e peguei o seguinte erro:

Oops!
Αυτό είναι άβολο..
 
We encountered a 404 Δεν βρέθηκε σφάλμα.
 
You are looking for 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/Εκφραστική/public/.

Enfim, 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 (command):

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 λος/διαδρομή βάσης como solução de contorno. Η εγκατάσταση είναι απλή:

$ Συνθέτης 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 “$app ter sido inicializada:

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

That’s it!

Referência

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

Σύνολο επισκέψεων: 4664

Um comentário sobreΕπίλυση “Αυτό είναι άβολο. / 404 Δεν βρέθηκε σφάλμα” μετά την εγκατάσταση του “zend-εκφραστική”

Αφήνω μια απάντηση

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα απαιτούμενα πεδία σημειώνονται με *