Est-il possible d'écrire une chaîne ou de se connecter à la console?
Ce que je veux dire
Tout comme dans JSP, si nous imprimons quelque chose comme system.out.println("some")
ça, il sera là sur la console, pas sur une page.
Firefox
Sur Firefox, vous pouvez utiliser une extension appelée FirePHP qui permet la journalisation et le vidage des informations de vos applications PHP vers la console. Il s'agit d'un addon à l'extension de développement Web génial Firebug .
Chrome
Cependant, si vous utilisez Chrome, il existe un outil de débogage PHP appelé Chrome Logger ou webug (webug a des problèmes avec l'ordre des journaux).
Plus récemment, Clockwork est en développement actif qui étend les outils de développement en ajoutant un nouveau panneau pour fournir des informations de débogage et de profilage utiles. Il fournit un support prêt à l' emploi pour Laravel 4 et Slim 2 et un support peut être ajouté via son API extensible.
Utiliser Xdebug
Une meilleure façon de déboguer votre PHP serait via Xdebug . La plupart des navigateurs fournissent des extensions d'assistance pour vous aider à transmettre la chaîne de cookie / requête requise pour initialiser le processus de débogage.
Ou vous utilisez l'astuce de PHP Debug pour consoler .
Vous avez d'abord besoin d'une petite fonction d'assistance PHP
Ensuite, vous pouvez l'utiliser comme ceci:
Cela créera une sortie comme celle-ci:
la source
"Debug Objects: " . $data . ""
$data
apparaît dans la sortie, alors vous n'avez pas tapé la fonction exactement comme indiqué. Examinez attentivement vos guillemets simples et doubles, pour vous assurer qu'ils correspondent au code ci-dessus.$data
est une variable php; au moment où la page est envoyée au navigateur, cette variable php aura été remplacée par le paramètre passé àdebug_to_console
. Le navigateur ne devrait jamais voir$data
. (Si vous regardezpage source
dans le navigateur, cela ne devrait pas dire$data
.)Si vous cherchez une approche simple, faites écho en JSON:
la source
function debug_log( $object=null, $label=null ){ $message = json_encode($object, JSON_PRETTY_PRINT); $label = "Debug" . ($label ? " ($label): " : ': '); echo "<script>console.log(\"$label\", $message);</script>"; }
Par défaut, toutes les sorties vont à
stdout
, qui est la réponse HTTP ou la console, selon que votre script est exécuté par Apache ou manuellement sur la ligne de commande. Mais vous pouvez utilisererror_log
pour la journalisation et divers flux d'E / S peuvent être écrits avecfwrite
.la source
error_log
c'est ce dont j'avais besoin pour sortir sur le terminal à partir du serveur Web intégré PHPEssayez ce qui suit. Ça fonctionne:
la source
Crée un
avec le
de sorte que le div ne s'affiche pas, mais le
est créée en javascript. Vous obtenez donc le message dans la console.
la source
div
. si vous venez d'avoir un<script>
bloc, rien ne sera affiché dans le navigateur.json.encode
afin que les guillemets ne cassent pas votre ligne de code. Par exemple:echo "<script>console.log(".json_encode($msg).")</script>";
En tant qu'auteur de la page Web liée dans la réponse populaire , je voudrais ajouter ma dernière version de cette fonction d'aide simple. C'est beaucoup plus solide.
J'utilise
json_encode()
pour vérifier si le type de variable n'est pas nécessaire et ajouter également un tampon pour résoudre les problèmes avec les frameworks. Il n'y a pas de retour solide ou d'utilisation excessive deheader()
.Usage
Capture d'écran du résultat
Aussi un exemple simple comme image pour le comprendre beaucoup plus facilement:
la source
Je pense qu'il peut être utilisé -
la source
Quelques bonnes réponses qui ajoutent plus de profondeur; mais j'avais besoin de quelque chose de plus simple et plus comme la
console.log()
commande JavaScript .J'utilise PHP dans beaucoup de "collecte de données et transformation en XML" dans les applications Ajax. Le JavaScript
console.log
ne fonctionne pas dans ce cas; il casse la sortie XML.Xdebug, etc. avait des problèmes similaires.
Ma solution sous Windows:
.txt
fichier accessible et accessible en écritureerror_log
variable PHP dans le.ini
fichier pour écrire dans ce fichiererror_log('myTest');
commande PHP pour envoyer des messagesCette solution est simple et répond à mes besoins la plupart du temps. PHP standard et le volet d'aperçu est automatiquement mis à jour à chaque fois que PHP y écrit.
la source
json_encode
résoudrait-il également le problème? Si c'est le cas, il se peut que des guillemets dans le message interfèrent avec des guillemets dans le script. (par exemple:)echo "<script>console.log(".json_encode($msg).")</script>";
. Sinon, je suis curieux de savoir quel est le problème à l'origine de la rupture du script console.log et comment / pourquoi votre solution a résolu ce problème. Votre solution est bonne - j'essaie simplement d'en savoir plus sur les conditions qui ont causé laconsole.log
rupture de la sortie XML. Dans de nombreux cas, un journal des erreurs comme vous l'avez fait est bien mieux qu'un rapideconsole.log
.Interaction PHP et JavaScript.
la source
Je trouve cela utile:
Et utilisez-le comme:
Quelles sorties dans la console:
Et vous pouvez désactiver les journaux moins importants en les limitant à l'aide de la valeur $ debug.
la source
console('Even Less Important' ,6 , $debug);
cela ne s'affichera pas dans la console? pourquoi tout ce qui est supérieur à 5 n'est pas affiché$output = '<script>console.log("' . str_repeat(" ", $priority-1)
et. '");</script>';
. Seulementimplode(",", $data)
et$data
c'est différent.Court et facile, pour les tableaux, les chaînes ou aussi les objets.
la source
la source
Si vous souhaitez écrire dans le fichier journal PHP et non dans la console JavaScript, vous pouvez utiliser ceci:
error_log("This is logged only to the PHP log")
Référence: error_log
la source
Pour Chrome, il existe une extension appelée Chrome Logger permettant de consigner les messages PHP.
Les Firefox DevTools ont même un support intégré pour le protocole Chrome Logger .
Pour activer la journalisation, il vous suffit d'enregistrer le fichier «ChromePhp.php» dans votre projet. Ensuite, il peut être utilisé comme ceci:
Exemple tiré de la page GitHub .
La sortie peut alors ressembler à ceci:
la source
"ccampbell/chromephp": "*"
Il existe également une excellente extension Google Chrome, PHP Console , avec une bibliothèque PHP qui vous permet de:
error file:line
dans votre éditeur de texte.la source
Je cherchais un moyen de déboguer du code dans un plugin WordPress que je développais et suis tombé sur ce post.
J'ai pris les morceaux de code qui me sont les plus applicables dans d'autres réponses et les ai combinés en une fonction que je peux utiliser pour déboguer WordPress. La fonction est:
L'utilisation est la suivante:
Si cette fonction est utilisée avec le développement WordPress, la fonction doit être placée dans le
functions.php
fichier du thème enfant et peut ensuite être appelée n'importe où dans le code.la source
J'ai abandonné tout ce qui précède au profit de Debugger & Logger . Je ne peux pas le louer assez!
Cliquez simplement sur l'un des onglets en haut à droite ou sur le "cliquez ici" pour développer / masquer.
Remarquez les différentes "catégories". Vous pouvez cliquer sur n'importe quel tableau pour l'agrandir / le réduire.
Depuis la page Web
la source
Depuis 2017, Firebug et donc FirePHP a été désactivé .
J'ai écrit quelques petites modifications à l'outil ChromePHP pour permettre une migration transparente de FirePHP vers Firebug pour le débogage via la console.
Cet article explique en étapes simples et claires
Migrez de FirePHP vers ChromePHP en 5 minutes (sans casser le code existant)
la source
Pour les appels Ajax ou les réponses XML / JSON, où vous ne voulez pas jouer avec le corps, vous devez envoyer des journaux via des en-têtes HTTP, puis les ajouter à la console avec une extension Web. C'est ainsi que FirePHP (plus disponible) et QuantumPHP (un fork de ChromePHP) le font dans Firefox.
Si vous avez la patience, x-debug est une meilleure option - vous obtenez une compréhension plus approfondie de PHP, avec la possibilité de suspendre votre script, de voir ce qui se passe, puis de reprendre le script.
la source
Je suis peut-être en retard pour une fête, mais je cherchais une implémentation de la fonction de journalisation qui:
console.log()
,console.log()
.La sortie ressemble donc à ça:
(L'extrait ci-dessous est testé sur php
7.2.11
. Je ne suis pas sûr de sa compatibilité ascendante avec php. Cela peut également être un problème pour javascript (dans un terme d'anciens navigateurs), car il crée une virgule de fin après lesconsole.log()
arguments - ce qui n'est pas légal jusqu'auES 2017
.)la source
Chacun de ces deux fonctionne:
la source
Voici ma solution, la bonne chose à propos de celui-ci est que vous pouvez passer autant de paramètres que vous le souhaitez.
Appelez ça de cette façon
Vous devriez maintenant pouvoir voir la sortie dans votre console, codage heureux :)
la source
Utilisation:
la source
Voici une fonction pratique. Il est super simple à utiliser, vous permet de passer autant d'arguments que vous le souhaitez, de n'importe quel type, et affichera le contenu de l'objet dans la fenêtre de la console du navigateur comme si vous appeliez console.log depuis JavaScript - mais depuis PHP
Remarque, vous pouvez également utiliser des balises en passant «TAG-YourTag», et il sera appliqué jusqu'à ce qu'une autre balise soit lue, par exemple, «TAG-YourNextTag»
REMARQUE: func_num_args () et func_num_args () sont des fonctions PHP pour lire un nombre dynamique d'arguments d'entrée et permettent à cette fonction d'avoir infiniment de requêtes console.log à partir d'un seul appel de fonction.
la source
Bien que ce soit une vieille question, je la cherchais. Voici ma compilation de quelques solutions répondues ici et quelques autres idées trouvées ailleurs pour obtenir une solution unique.
CODE:
ESSAIS ET UTILISATION:
L'utilisation est simple. Inclure la première fonction pour publier manuellement sur la console. Utilisez la deuxième fonction pour détourner la gestion des exceptions php. Le test suivant devrait donner une idée.
EXPLICATION:
La fonction
console($data, $is_error, $file, $fn)
prend une chaîne ou un tableau comme premier argument et la publie sur la console à l'aide d'inserts js.Le deuxième argument est un indicateur pour différencier les journaux normaux des erreurs. Pour les erreurs, nous ajoutons des écouteurs d'événements pour nous informer par le biais d'alertes si des erreurs ont été lancées, en les mettant également en évidence dans la console. Ce drapeau est défini par défaut sur false.
Les troisième et quatrième arguments sont des déclarations explicites de numéros de fichier et de ligne, ce qui est facultatif. S'ils sont absents, ils utilisent par défaut la fonction php prédéfinie
debug_backtrace()
pour les récupérer pour nous.La fonction suivante
exceptions_to_console($svr, $str, $file, $ln)
a quatre arguments dans l'ordre appelé par le gestionnaire d'exceptions par défaut de php. Ici, le premier argument est la gravité, que nous vérifions en outre avec des constantes prédéfinies en utilisant la fonctionseverity_tag($code)
pour fournir plus d'informations sur l'erreur.REMARQUER :
Le code ci-dessus utilise des fonctions et des méthodes JS qui ne sont pas disponibles dans les anciens navigateurs. Pour la compatibilité avec les anciennes versions, il a besoin de remplacements.
Le code ci-dessus est destiné aux environnements de test, où vous seul avez accès au site. Ne l'utilisez pas sur des sites Web (de production) en direct.
SUGGESTIONS :
La première fonction a
console()
lancé quelques notifications, je les ai donc enveloppées dans une autre fonction et je l'ai appelée en utilisant l'opérateur de contrôle d'erreur '@'. Cela peut être évité si cela ne vous dérange pas.Enfin, les alertes qui apparaissent peuvent être gênantes lors du codage. Pour cela, j'utilise ce bip (trouvé dans la solution: https://stackoverflow.com/a/23395136/6060602 ) au lieu des alertes contextuelles. C'est assez cool et les possibilités sont infinies, vous pouvez jouer vos morceaux préférés et rendre le codage moins stressant.
la source