حل “هذا حرج / 404 لم يتم العثور على خطأ” بعد التثبيت “زند معبرة”

العمل مع الوسيطة, في هذا المنصب سوف نحل مشكلة “هذا حرج / 404 لم يتم العثور على خطأ” بعد التثبيت “زند معبرة”.

المشكلة

Recentemente, interessado em ver como os Middleware funcionam, لقد فعلت ذلك للتثبيت “zend-expressive-skeletonconforme o Guia Quick Start: Using the Skeleton + Installer:

$ composer create-project zendframework/زند-معبرة-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 (السابقين: 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 لوس/basepath como solução de contorno. تثبيت بسيط:

$ الملحن require لوس/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

إجمالي عدد مرات الدخول: 193

تعليق على “حل “هذا حرج / 404 لم يتم العثور على خطأ” بعد التثبيت “زند معبرة”

اترك ردًا

عنوان البريد الإلكتروني الخاص بك لن ينشر. يتم وضع علامة الحقول المطلوبة مع *