Directo al grano
Hay un producto patentado que me ayuda con éxito en la depuración y lo llamó PhpDump .
En un momento, CMS MODX me pidió que escribiera mi depurador. Por supuesto, hay var_dump, phpConsole, xDebug en PHP. Pero aquí estoy con mi PhpDump .
Diré que la solución no es perfecta, pero sí muy práctica.
Cuánto te gusta depende de ti.
Aquí hay algunas capturas de pantalla de cómo se ve esto.


En el artículo te diré cómo instalarlo y usarlo en CMS MODX Revo
Requisitos
Apache + PHP 7, CMS MODX Revo 2.7
Git + compositor
Descargar e instalar
Cree un directorio para PhpDump por separado de sus proyectos. Dado que es posible que desee usarlo en un servidor local en diferentes proyectos. Para hacer esto, no es necesario instalarlo en todas partes.
En el directorio, cree un archivo composer.json
con los siguientes datos:
{ "require":{ "Alpa/PhpDump":"1.*" }, "repositories": [ { "type": "git", "url": "https://github.com/ALexeyP0708/PhpDump.git" }, { "type": "git", "url": "https://github.com/ALexeyP0708/EntityDetails" } ] }
En la terminal, escribe $ composer install
Al instalar a través de Composer, el proyecto se ubicará en la [directory install]/vendor/PhpDump
- Instalación a través de GIT
Comando para terminal
$ git clone https://github.com/ALexeyP0708/PhpDump.git
O descomprima el archivo zip.
se puede descargar aquí GitHub
Instalar PhpDumpConsole
En Google Chrome, vaya a la sección Extensiones , active el modo desarrollador (en la esquina superior derecha), luego
.
Especifique el directorio [directory PhpDump]/ChromeExtension/PhpDumpConsole_v1.1
.
Aparecerá un ícono de cruz roja en el panel: un engranaje en un círculo. Si el engranaje no se vuelve azul cuando hace clic, entonces el servidor no es compatible con PhpDump o el cliente no pasa la autorización.
Control de salud
echa un vistazo al archivo [dirictory Php Dump]/tests/test_debugManager.php
Si se instala a través del compositor, debe especificar la ruta correcta al archivo del cargador automático.
Para hacer esto, reemplace la línea
include_once __DIR__.'/../vendor/autoload.php';
en
El directorio donde está instalado PhpDump debe tener acceso web y enrutamiento libre a los scripts.
Suponga que configura PhpDump en /sites/www/mysite/TestPhpDump
y accede al sitio web http://mysite/
luego para ejecutar el script de prueba
http://mysite/TestPhpDump/tests/test_debugManager.php
Se iniciará la página con los errores generados. Inicie la consola Google Chrome y haga clic en el engranaje en el panel de aplicaciones. La página se volverá a cargar, el engranaje se volverá azul. Toda la información se mostrará ahora en la consola.
Cómo ejecutar tu proyecto
En la parte superior de la página que ejecuta el script para su proyecto, debe especificar:
include_once '[directory phpdump]/vendor/autoload.php';
Debe comprender que PhpDump se ejecuta en el escenario donde se declaran los datos de cadena.
También debe tener en cuenta el hecho de que PHPdumpConsole muestra un volcado no solo para la página principal, sino también para las solicitudes ajax y para los scripts de front-end generados dinámicamente por el servidor.
Si su proyecto accede aleatoriamente a diferentes escenarios (por ejemplo, la página se cargó a través de Index.php, y la solicitud ajax se realizó a través de other.php o el navegador carga un script dinámico generado por js desde script.js.php), pueden ocurrir situaciones imprevistas.
En este caso, es necesario que todo el enrutamiento pase por un solo archivo de secuencias de comandos. Por ejemplo, a través de /index.php. O aplique soluciones adicionales, como se hizo con MODX (descrito a continuación).
Lanzamiento en un sitio de prueba con CMS MODX
Hay varias soluciones para ejecutar PhpDump en CMS MODX.
La primera solución: de acuerdo con las instrucciones anteriores, escriba el código en el archivo index.php de su sitio:
include_once '[directory phpdump]/vendor/autoload.php'; new PhpDump\InitDump();
En este caso, PhpDump funcionará en modo de depuración y detectará errores.
Pero todo lo que aparecerá en los registros MODX, así como los errores que el sistema suprime,
no se mostrará en PhpDumpConsole
La segunda opción: Oficial - sin hacer personalización. Esta es una extensión de la clase ErrorHandler y la configuración de las variables correspondientes en los parámetros MODX.
Esta solución tiene un inconveniente. Si los datos se ingresan incorrectamente en la configuración, el sitio se bloquea. Y la situación solo se puede corregir a través de la base de datos.
Por lo tanto, se omite la descripción de esta opción.
En esta opción, puede ver todos los errores PHP generados. Pero no verá los registros generados, en los que aparece una parte significativa de los errores MODX.
La tercera opción, en la que me he ocupado personalmente, es configurar el enrutamiento completo de las llamadas de script a través del archivo 'dev_route.php';
Usando .htaccess, todas las llamadas no estáticas se dirigen al archivo dev_route.php.
ATENCIÓN: Hasta el final, el comportamiento no ha sido investigado. Quizás algunas aplicaciones puedan ofrecer una lógica diferente de solicitudes al sitio, cuyo enrutamiento no se describe en dev_route.php.
ATENCIÓN: .htaccess no se completa por completo. No todos los recursos estáticos están definidos en él. Por lo tanto, se procesarán en dev_route.php
Hacemos una copia de seguridad del archivo .htaccess
de la .htaccess
anterior.
Cree un nuevo .htaccess
en la raíz del directorio del sitio e ingrese el código:
# file .htaccess #---------------------------------------- # . - . RewriteCond %{REQUEST_URI} /manager/min/assets/.* RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_URI} /manager/assets/.* RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_URI} /assets/.* RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ - [R=404,L] #--------------------------------------- #--------------------------------------- # RewriteCond %{REQUEST_URI} /manager/min/assets/.* RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_URI} /manager/assets/.* RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_URI} /assets/.* RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteRule ^(.*)$ $1 [L] #--------------------------------------- #--------------------------------------- # c . RewriteCond %{REQUEST_FILENAME} .*\.js$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.html$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.css$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.gif$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.jpg$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.jpeg$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.png$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.svg$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.woff$ RewriteRule ^(.*)$ $1 [L] #--------------------------------------- #--------------------------------------- # . RewriteCond %{REQUEST_URI} /manager(?:|/.*) RewriteRule ^(.*)$ dev_route.php [L] RewriteCond %{REQUEST_URI} /connectors(?:|/.*) RewriteRule ^(.*)$ dev_route.php [L] #--------------------------------------- #--------------------------------------- # . RewriteCond %{REQUEST_URI} .* RewriteRule ^(.*)$ dev_route.php?q=$1 [L,QSA] #---------------------------------------
Creamos el archivo dev_route.php
en la raíz del directorio del sitio e dev_route.php
código en él:
<?php include_once '[yor path php dump]/vendor/autoload.php';
A continuación, en el archivo core\xpdo\xpdo.class.php
(para MODX revo 2.7), formatee el método de registro de la siguiente manera:
public function log($level, $msg, $target= '', $def= '', $file= '', $line= '') { \deb::print($msg."=>[$target][$def][$file][$line]",'LOG'); $this->_log($level, $msg, $target, $def, $file, $line); }
Y eso es todo. Todo debería funcionar correctamente para usted.
Pruebas en el panel de administración. si el panel de administración se carga bien, entonces todo se hace como debería.
Cómo utilizar:
Configuraciones de seguridad
Actualmente, PhpDump no está diseñado para trabajos profesionales, por lo que las condiciones de seguridad son mínimas.
Si decide adjuntar PhpDump a un sitio existente en Internet, en el archivo [directorio phpdump] /src/include_file_in_index.php, cambie la siguiente configuración para la autorización:
$settings=[ 'hashkeys'=>[ 'HashKey'=>[
En el lado del cliente en la consola, en la lista desplegable 'Contexto de Java Scripts', seleccione PhpDumpConsole e ingrese el código en la consola
dm.setHashKey({ hashkey:'HashKey', greeting_server:'greeting_server', greeting_client:'greeting_client' }); // hashkey , greeting_server, greeting_client . dm.bindHashKeyDomain({hashkey:'HashKey',domain:'global'}); // domain:'your_domain' // domain='global' .
Otros bollos
A través de la consola, puede controlar el seguimiento de encendido / apagado, filtrar la salida.
Puede encontrar todo esto en las instrucciones en la página de GitHub
PhpDump puede usarse no solo para MODX, sino también en otros proyectos. Lo principal para saber cómo abrocharse.
PD: Si eres fanático de MODX, pronto encontrarás nuevos bollos: una forma de dividir y conquistar fragmentos. Los fragmentos lógicos y los fragmentos de plantilla pueden autoorganizarse y agruparse entre sí, combinando así fragmentos 2x-3x para expandir el comportamiento.
Hay flexibilidad en la escritura de fragmentos. Los programadores no necesitarán describir el ciclo completo de escritura de un fragmento, sino solo una parte separada, describiendo su API para una mayor interacción con otros fragmentos.
Gracias a todos.