Droit au but
Il existe un produit propriétaire qui m'aide avec succès dans le débogage et l'a appelé PhpDump .
À un moment donné, CMS MODX m'a invité à écrire mon débogueur. Bien sûr, il y a var_dump, phpConsole, xDebug en PHP. Mais me voici avec mon PhpDump .
Je dirai que la solution n'est pas parfaite, mais très pratique.
Combien vous l'aimez dépend de vous.
Voici quelques captures d'écran de ce à quoi cela ressemble.


Dans l'article, je vais vous expliquer comment l'installer et l'utiliser dans CMS MODX Revo
Prérequis
Apache + PHP 7, CMS MODX Revo 2.7
Git + compositeur
Télécharger et installer
Créez un répertoire pour PhpDump séparément de vos projets. Puisque vous voudrez peut-être l'utiliser sur un serveur local dans différents projets. Pour ce faire, il n'est pas nécessaire de l'installer partout.
Dans le répertoire, créez un fichier composer.json
avec les données suivantes:
{ "require":{ "Alpa/PhpDump":"1.*" }, "repositories": [ { "type": "git", "url": "https://github.com/ALexeyP0708/PhpDump.git" }, { "type": "git", "url": "https://github.com/ALexeyP0708/EntityDetails" } ] }
Dans le terminal, tapez $ composer install
Lors de l'installation via composer, le projet sera situé dans le [directory install]/vendor/PhpDump
- Installation via GIT
Commande pour terminal
$ git clone https://github.com/ALexeyP0708/PhpDump.git
Ou décompressez l'archive zip.
peut être téléchargé ici GitHub
Installer PhpDumpConsole
Dans Google Chrome, accédez à la section Extensions , activez le mode développeur (dans le coin supérieur droit), puis
.
Spécifiez le répertoire [directory PhpDump]/ChromeExtension/PhpDumpConsole_v1.1
.
Une icône en forme de croix rouge apparaîtra dans le panneau - un engrenage dans un cercle. Si l'engrenage ne devient pas bleu lorsque vous cliquez, le serveur ne prend pas en charge PhpDump ou le client ne passe pas l'autorisation.
Bilan de santé
consultez le fichier [dirictory Php Dump]/tests/test_debugManager.php
S'il est installé via le composeur, vous devez spécifier la route correcte vers le fichier du chargeur automatique.
Pour ce faire, remplacez la ligne
include_once __DIR__.'/../vendor/autoload.php';
sur
Le répertoire dans lequel PhpDump est installé doit avoir un accès Web et un routage gratuit vers les scripts.
Supposons que vous définissez PhpDump sur /sites/www/mysite/TestPhpDump
et accédez au site Web http://mysite/
puis pour exécuter le script de test
http://mysite/TestPhpDump/tests/test_debugManager.php
La page contenant les erreurs générées démarre. Lancez la console Google Chrome et cliquez sur l'engrenage dans le panneau d'application. La page se rechargera, l'engrenage deviendra bleu. Toutes les informations seront désormais affichées dans la console.
Comment exécuter votre projet
En haut de la page qui exécute le script de votre projet, vous devez spécifier:
include_once '[directory phpdump]/vendor/autoload.php';
Vous devez comprendre que PhpDump s'exécute dans le scénario où les données de chaîne sont déclarées.
Vous devez également prendre en compte le fait que PHPdumpConsole affiche un vidage non seulement pour la page principale, mais aussi pour les requêtes ajax et pour les scripts frontaux générés dynamiquement par le serveur.
Si votre projet accède de manière aléatoire à différents scénarios (par exemple, la page a été chargée via Index.php et la demande ajax a été effectuée via other.php ou si le navigateur charge un script généré js dynamique à partir de script.js.php), des situations imprévues peuvent se produire.
Dans ce cas, il est nécessaire que tout le routage passe par un seul fichier de script. Par exemple, via /index.php. Ou appliquez des solutions supplémentaires, comme cela a été fait avec MODX (décrit ci-dessous).
Lancement sur un site de test avec CMS MODX
Il existe plusieurs solutions pour exécuter PhpDump sur CMS MODX.
La première solution - selon les instructions ci-dessus, écrivez le code dans le fichier index.php de votre site:
include_once '[directory phpdump]/vendor/autoload.php'; new PhpDump\InitDump();
Dans ce cas, PhpDump fonctionnera en mode débogage et interceptera les erreurs.
Mais tout ce qui apparaîtra dans les journaux MODX, ainsi que les erreurs supprimées par le système,
ne sera pas affiché dans PhpDumpConsole
La deuxième option: officielle - sans faire de personnalisation. Il s'agit d'une extension de la classe ErrorHandler et du réglage des variables correspondantes dans les paramètres MODX.
Cette solution présente un inconvénient. Si les données ne sont pas entrées correctement dans les paramètres, le site se bloque. Et la situation ne peut être corrigée que par le biais de la base de données.
Par conséquent, la description de cette option est omise.
Dans cette option, vous pouvez voir toutes les erreurs PHP générées. Mais vous ne verrez pas les journaux générés, dans lesquels une partie importante des erreurs MODX apparaît.
La troisième option, sur laquelle j'ai personnellement insisté, consiste à configurer le routage complet des appels de script via le fichier 'dev_route.php';
À l'aide de .htaccess, tous les appels non statiques sont dirigés vers le fichier dev_route.php.
ATTENTION: Jusqu'à la fin, le comportement n'a pas été étudié. Peut-être que certaines applications peuvent offrir une logique différente de requêtes au site, dont le routage n'est pas décrit dans dev_route.php.
ATTENTION: .htaccess n'est pas complètement terminé. Toutes les ressources statiques n'y sont pas définies. Par conséquent, ils seront traités dans dev_route.php
Nous faisons une sauvegarde du fichier .htaccess
de l'ancien.
Créez un nouveau .htaccess
à la racine du répertoire du site et entrez le code:
# 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] #---------------------------------------
Nous créons le fichier dev_route.php
à la racine du répertoire du site et y dev_route.php
code:
<?php include_once '[yor path php dump]/vendor/autoload.php';
Ensuite, dans le fichier core\xpdo\xpdo.class.php
(pour MODX revo 2.7), formatez la méthode de journalisation comme suit:
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); }
Et c'est tout. Tout devrait fonctionner correctement pour vous.
Test dans le panneau d'administration. si le panneau d'administration se charge bien, alors tout est fait comme il se doit.
Comment utiliser:
Paramètres de sécurité
PhpDump n'est pas actuellement conçu pour un travail professionnel, donc les conditions de sécurité sont minimales.
Si vous décidez de joindre PhpDump à un site existant sur Internet, dans le fichier [répertoire phpdump] /src/include_file_in_index.php, modifiez les paramètres suivants pour l'autorisation:
$settings=[ 'hashkeys'=>[ 'HashKey'=>[
Côté client dans la console, dans la liste déroulante 'Contexte des scripts Java', sélectionnez PhpDumpConsole et entrez le code dans la console
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' .
Autres petits pains
Grâce à la console, vous pouvez contrôler la trace marche / arrêt, filtrer la sortie.
Vous pouvez trouver tout cela dans les instructions sur la page GitHub
PhpDump peut être utilisé non seulement pour MODX, mais aussi dans d'autres projets. La principale chose à savoir comment attacher.
PS: Si vous êtes fans de MODX, vous trouverez bientôt de nouveaux petits pains: un moyen de former les fragments de division et de conquête. Les extraits de code et les extraits de modèle peuvent s'auto-organiser et se regrouper, combinant ainsi des extraits 2x-3x, vous pouvez étendre le comportement.
Il est possible d'écrire des extraits de code. Les programmeurs n'auront pas besoin de décrire le cycle complet d'écriture d'un extrait de code, mais seulement une partie distincte, décrivant son API pour une interaction ultérieure avec d'autres extraits.
Merci à tous.