Información general sobre inicialización y bootstrap
Para ejecutar la aplicación Commerce, se han implementado las siguientes acciones en pub/index.php:
- Incluya app/bootstrap.php, que realiza rutinas de inicialización esenciales como la gestión de errores, la inicialización del cargador automático, la configuración de opciones de generación de perfiles y la configuración de la zona horaria predeterminada.
- Crear una instancia de \Magento\Framework\App\Bootstrap.php
- Crear una instancia de aplicación de Commerce: \Magento\Framework\AppInterface
- Ejecutar Commerce
Bootstrap run logic
El objeto de arranque usa el siguiente algoritmo para ejecutar la aplicación Commerce:
-
Inicializa el controlador de errores.
-
Crea el administrador de objetos y los servicios compartidos básicos que se usan en todas partes y se ven afectados por el entorno. Los parámetros de entorno se insertan correctamente en estos objetos.
-
Afirma que el modo de mantenimiento está habilitado para not; de lo contrario, finaliza.
-
Afirma que la aplicación de Commerce está instalada; de lo contrario, finaliza.
-
Inicia la aplicación de Commerce.
Cualquier excepción no detectada durante el inicio de la aplicación se vuelve a pasar automáticamente a Commerce en el método
catchException()
, que puede utilizar para controlar la excepción. Este último debe devolvertrue
ofalse
:- Si
true
: Commerce administró la excepción correctamente. No hay necesidad de hacer nada más. - Si
false
: (o cualquier otro resultado vacío) Commerce no controló la excepción. El objeto de bootstrap realiza la subrutina predeterminada de control de excepciones.
- Si
-
Envía la respuesta proporcionada por el objeto de aplicación.
note info INFO Las afirmaciones de que la aplicación de Commerce está instalada y no está en modo de mantenimiento son el comportamiento predeterminado de la clase \Magento\Framework\App\Bootstrap
. Puede modificarlo con un script de punto de entrada al crear el objeto de bootstrap.Ejemplo de script de punto de entrada que modifica el objeto de bootstrap:
code language-php <?php use Magento\Framework\App\Bootstrap; require __DIR__ . '/app/bootstrap.php'; $params = $_SERVER; $params[Bootstrap::PARAM_REQUIRE_MAINTENANCE] = true; // default false $params[Bootstrap::PARAM_REQUIRE_IS_INSTALLED] = false; // default true $bootstrap = Bootstrap::create(BP, $params); /** @var \Magento\Framework\App\Http $app */ $app = $bootstrap->createApplication('Magento\Framework\App\Http'); $bootstrap->run($app);
Tratamiento de excepciones predeterminado
El objeto de bootstrap especifica cómo gestiona la aplicación Commerce las excepciones no detectadas de la siguiente manera:
- En modo de desarrollador, muestra la excepción tal cual.
- En cualquier otro modo, intenta registrar la excepción y mostrar un mensaje de error genérico.
- Termina Commerce con código de error
1
Aplicaciones de punto de entrada
Tenemos las siguientes aplicaciones de punto de entrada (es decir, aplicaciones definidas por Commerce que el servidor web utiliza como índice de directorio):
Punto de entrada HTTP
\Magento\Framework\App\Http funciona de la siguiente manera:
-
Determina el área de aplicación.
-
Inicia el controlador delantero y los sistemas de enrutamiento para buscar y ejecutar una acción del controlador.
-
Utiliza un objeto de respuesta HTTP para devolver el resultado obtenido de la acción del controlador.
-
Tratamiento de errores (en el siguiente orden de prioridad):
-
Si está usando modo de desarrollador:
- Si la aplicación Commerce no está instalada, redirija al Asistente para la instalación.
- Si la aplicación de Commerce está instalada, mostrar un error y el código de estado HTTP 500 (Error interno del servidor).
-
Si la aplicación de Commerce está en modo de mantenimiento, muestre una página de aterrizaje "Servicio no disponible" de fácil manejo con el código de estado HTTP 503 (Servicio no disponible).
-
Si la aplicación Commerce está no instalada, redirija al Asistente para la instalación.
-
Si la sesión no es válida, redirija a la página principal.
-
Si hay algún otro error de inicialización de la aplicación, muestre una página "Página no encontrada" fácil de usar con el código de estado HTTP 404 (No encontrada).
-
En cualquier otro error, muestre una página "Servicio no disponible" fácil de usar con la respuesta HTTP 503 y genere un informe de errores y muestre su ID en la página.
-
Punto de entrada de recurso estático
\Magento\Framework\App\StaticResource es una aplicación para recuperar recursos estáticos (por ejemplo, CSS, JavaScript e imágenes). Pospone cualquier acción con un recurso estático hasta que se solicita el recurso.
<your Commerce install dir>/pub/static
.En modo predeterminado o de desarrollador, una solicitud para un recurso estático inexistente se redirige al punto de entrada estático según las reglas de reescritura especificadas por el .htaccess
apropiado.
Cuando se redirige la solicitud al punto de entrada, la aplicación de Commerce analiza la dirección URL solicitada en función de los parámetros recuperados y encuentra el recurso solicitado.
-
En el modo developer, se devuelve el contenido del archivo para que el contenido devuelto esté actualizado cada vez que se solicite el recurso.
-
En el modo default, el recurso recuperado se publica para que la dirección URL solicitada anteriormente pueda obtener acceso a él.
El servidor procesa todas las solicitudes futuras del recurso estático de la misma manera que los archivos estáticos; es decir, sin involucrar el punto de entrada. Si es necesario sincronizar los archivos publicados con los originales, se debe quitar el directorio
pub/static
; como resultado, los archivos se vuelven a publicar automáticamente con la siguiente solicitud.
Punto de entrada de medios
Magento\MediaStorage\App\Media recupera recursos multimedia (es decir, cualquier archivo cargado en el almacenamiento multimedia) de la base de datos. Se utiliza siempre que la base de datos está configurada como almacenamiento de medios.
\Magento\Core\App\Media
intenta encontrar el archivo multimedia en el almacenamiento de base de datos configurado, escribirlo en el directorio pub/static
y devolver su contenido. Si se produce un error, devuelve un código de estado HTTP 404 (no encontrado) en el encabezado sin contenido.