ແກ້ໄຂ “ນີ້ແມ່ນງຸ່ມງ່າມ / 404 ຄວາມຜິດພາດບໍ່ພົບ” ຫຼັງຈາກການຕິດຕັ້ງ “zend ການສະແດງອອກ”

ການເຮັດວຽກກັບ Middleware, ຕອບນີ້ຈະແກ້ໄຂບັນຫາຂອງ “ນີ້ແມ່ນງຸ່ມງ່າມ / 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 ສໍາລັບການ 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 (ວິທີການ) 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/.

ໃນທີ່ສຸດ, 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. A instalação é simples:

$ ນັກແຕ່ງເພງ 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'));

ດັ່ງນັ້ນ, ມັນ!

Referência

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

ຈໍານວນທັງຫມົດ: 193

A ການທົບທວນຄືນກ່ຽວກັບ “ແກ້ໄຂ “ນີ້ແມ່ນງຸ່ມງ່າມ / 404 ຄວາມຜິດພາດບໍ່ພົບ” ຫຼັງຈາກການຕິດຕັ້ງ “zend ການສະແດງອອກ”

ອອກຈາກ Reply ເປັນ

ທີ່ຢູ່ອີເມວຂອງທ່ານຈະບໍ່ໄດ້ຮັບການຈັດພີມມາ. ທົ່ງນາທີ່ກໍານົດໄວ້ແມ່ນຫມາຍດ້ວຍ *