Comment puis-je écrire sur console en PHP?

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") Il sera là à la console pas à la page.

228
demandé sur Bhargav Rao 2010-12-01 13:34:19

23 réponses

Firefox

Sur Firefox, vous pouvez utiliser une extension appelée FirePHP {[6] } qui permet la journalisation et le dumping des informations de vos applications PHP vers la console. Ceci est 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 Enregistreur de ou webug (webug a des problèmes avec l'ordre de 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 le support peut être ajouté via son API extensible.

À L'Aide De 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 à passer la chaîne de cookie/requête requise pour initialiser le processus de débogage.

122
répondu Malachi 2018-09-14 18:21:09

Ou vous utilisez l'astuce de ce site PHP Debug console

D'abord, vous avez besoin d'une petite fonction D'aide PHP

function debug_to_console( $data ) {
    $output = $data;
    if ( is_array( $output ) )
        $output = implode( ',', $output);

    echo "<script>console.log( 'Debug Objects: " . $output . "' );</script>";
}

, Alors vous pouvez l'utiliser comme ceci

debug_to_console( "Test" );

, Cela va créer une sortie comme ceci:

Debug Objects: Test
281
répondu Senador 2017-03-02 19:23:36

Si vous cherchez une approche simple, echo as JSON:

<script>
    console.log(<?= json_encode($foo); ?>);
</script>
54
répondu Travis 2016-12-01 00:23:51

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 utiliser error_log pour l'enregistrement et le divers flux e/S peut être écrit avec fwrite.

32
répondu nikc.org 2010-12-01 10:44:02

Essayez ceci il fonctionne:

echo("<script>console.log('PHP: ".$data."');</script>");
26
répondu Mandy 2014-03-11 11:37:33

Quelques bonnes réponses qui ajoutent plus de profondeur; mais j'avais besoin de quelque chose de plus simple et plus comme la commande JS console.log().

J'utilise PHP dans beaucoup de "collecte de données et transformation en xml" dans L'application AJAX. le JS console.log ne fonctionne pas dans ce cas; il casse la sortie xml. (Peut-être que quelqu'un a une solution pour cela?)

Xdebug etc avait des problèmes similaires.

Ma solution dans Windows:

  • configurez un fichier .txt accessible et accessible en écriture
  • définir le PHP error_log variable dans le .ini fichier pour écrire ce fichier
  • ouvrez le fichier dans l'Explorateur de fichiers Windows et ouvrez un volet de prévisualisation
  • Utilisez la commande error_log('myTest'); PHP pour envoyer des messages

Cette solution est simple, répond à mes besoins la plupart du temps, PHP standard, et le volet de prévisualisation se met automatiquement à jour chaque fois que PHP y écrit.

14
répondu Klompenrunner 2015-06-06 08:03:25

En tant qu'auteur de la page Web liée dans la Réponse populaire ci-dessus, je voudrais ajouter ma dernière version de cette fonction d'aide simple, beaucoup plus solide.

J'utilise json_encode() pour vérifier le type var 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 de header().

/**
 * Simple helper to debug to the console
 *
 * @param $data object, array, string $data
 * @param $context string  Optional a description.
 *
 * @return string
 */
function debug_to_console( $data, $context = 'Debug in Console' ) {

    // Buffering to solve problems frameworks, like header() in this and not a solid return.
    ob_start();

    $output  = 'console.info( \'' . $context . ':\' );';
    $output .= 'console.log(' . json_encode( $data ) . ');';
    $output  = sprintf( '<script>%s</script>', $output );

    echo $output;
}

Utilisation

// $data is the example var, object; here an array.
$data = [ 'foo' => 'bar' ];
debug_to_console( $data );`

Capture D'écran du résultat

Aussi un exemple simple comme image à comprendre beaucoup facile.

entrez la description de l'image ici

14
répondu bueltge 2017-05-23 12:26:32

Je trouve cela utile:

function console($data, $priority, $debug)
{
    if ($priority <= $debug)
    {
        if (is_array($data))
            $output = '<script>console.log("' . str_repeat(" ", $priority-1) . implode( ",", $data) . '");</script>';
        else
            $output = '<script>console.log("' . str_repeat(" ", $priority-1) . $data . '");</script>';

        echo $output;
    }
}

Et l'utiliser comme:

<?php
$debug = 5; // All lower and equal priority logs will be displayed
console('Important' ,1 , $debug);
console('Less Important' ,2 , $debug);
console('Even Less Important' ,5 , $debug);
console('Again Important' ,1 , $debug);
?>

Qui sort dans la console:

Important
 Less Important
     Even Less Important
Again Important

Et vous pouvez désactiver les journaux moins importants en les limitant en utilisant $debug value

11
répondu zee 2015-05-15 11:34:05
    echo "<div display='none'><script type='text/javascript'>console.log('console log message')</script></div>";

Crée un

      <div>

Avec le

    display="none"

De sorte que le div n'est pas affiché, mais le

    console.log()
La fonction

Est créée en javascript. Si vous obtenez le message dans la console.

11
répondu Neo 2017-08-13 10:05:13
function phpconsole($label='var',$x){
 ?>
 <script type="text/javascript">
    console.log('<?php echo ($label)?>');
    console.log('<?php echo json_encode($x)?>');
    </script>
 <?php
}
7
répondu ashraf mohammed 2014-03-12 14:52:36

Court et facile, pour les tableaux, les chaînes ou aussi les objets.

function console_log( $data ) {
  $output  = "<script>console.log( 'PHP debugger: ";
  $output .= json_encode(print_r($data, true));
  $output .= "' );</script>";
  echo $output;
}
7
répondu Carlos Lugo 2016-04-07 19:57:16

Je pense qu'il peut être utilisé --

function jsLogs($data) {
    $html = "";

    if (is_array($data) || is_object($data)) {
        $html = "<script>console.log('PHP: ".json_encode($data)."');</script>";
    } else {
        $html = "<script>console.log('PHP: ".$data."');</script>";
    }

    echo($html);
    # exit();
}

jsLogs(array("test1", "test2")); # PHP: ["test1","test2"]
jsLogs(array("test1"=>array("subtest1", "subtest2"))); #PHP: {"test1":["subtest1","subtest2"]}
jsLogs("testing string"); #PHP: testing string
7
répondu Pankaj Bisht 2018-05-16 08:59:41

Si vous voulez écrire dans le fichier journal PHP, et non la console JavaScript, vous pouvez utiliser ceci:

error_log ( "This is logged only to the PHP log" )

Référence: http://php.net/manual/en/function.error-log.php

6
répondu Dan Green-Leipciger 2016-11-03 15:52:02

Pour Chrome, il existe une extension appelée Chrome Logger permettant de consigner les messages PHP.

Les DevTools Firefox ont même support intégré pour le protocole Chrome Logger .

Pour activer la journalisation, il vous suffit d'enregistrer le 'ChromePhp.php fichier dans votre projet. Ensuite, il peut être utilisé comme ceci:

include 'ChromePhp.php';
ChromePhp::log('Hello console!');
ChromePhp::log($_SERVER);
ChromePhp::warn('something went wrong!');

exemple tiré de la page GitHub .

La sortie peut alors ressembler à ce:

Journal du serveur dans Firefox DevTools

5
répondu Sebastian Zartner 2016-11-23 10:05:29

Il y a aussi une grande extension Google Chrome Console PHP avec bibliothèque php qui permet de:

  • Voir erreurs et exception dans la console JavaScript Chrome et dans les popups de notification.
  • vider toute variable de type.
  • exécuter du code PHP à distance.
  • Protégez l'accès par mot de passe.
  • grouper les journaux de la console sur demande.
  • aller au fichier d'erreur: ligne dans votre éditeur de texte.
  • copier les données d'erreur / débogage dans le presse-papiers (pour les testeurs).
4
répondu barbushin 2013-12-09 04:25:03

J'ai abandonné tout ce qui précède en faveur de http://phptoolcase.com/guides/ptc-debug-guide.html 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.

Notez les différentes "catégories". Vous pouvez cliquer sur n'importe quel tableau pour le développer/le coller.

Fromn la page web

"Caractéristiques Principales:

Show globals vars ($GLOBALS, $_POST, $_GET, $_COOKIE ...)
Show php version and loaded extensions
Replace php built in error handler
Log sql queries
Monitor code and sql queries execution time
Inspect variables for changes
Function calls tracing
Code coverage analysis to check which lines of script where executed
Dump of all types of variable
File inspector with code highlighter to view source code
Send messages to js console(Chrome only), for ajax scripts

" entrez la description de l'image ici

3
répondu Mawg 2014-04-13 02:57:35

Grand post merci, je cherchais un moyen de déboguer le code dans un plugin Wordpress que je développais et suis tombé sur ce post.

J'ai pris les bits de code qui me sont les plus applicables à partir des réponses ci-dessus et les ai combinés en une fonction que je peux utiliser pour déboguer Wordpress. La fonction est:

function debug_log( $object=null, $label=null, $priority=1 ){
    $priority = $priority<1? 1: $priority;
    $message = json_encode($object, JSON_PRETTY_PRINT);
    $label = "Debug" . ($label ? " ($label): " : ': ');
    echo "<script>console.log('".str_repeat("-", $priority-1).$label."', ".$message.");</script>";
}

L'utilisation est la suivante:

$txt = 'This is a test string';
$sample_array = array('cat', 'dog', 'pig', 'ant', 'fly');
debug_log( $txt,'',7 );
debug_log( $sample_array );

J'espère que quelqu'un d'autre trouvera cette fonction utile.

Si cette fonction est utilisée avec le développement fonction doit être placé dans les fonctions.fichier php du thème enfant et peut ensuite être appelé n'importe où dans le code.

3
répondu Clinton 2017-07-05 08:59:51
$variable = "Variable";
echo "<script>console.log('$variable');</script>";

Interaction PHP et Javascript.

3
répondu 0DAYanc 2017-08-03 23:42:36

À partir de 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 à firebug pour le débogage via la console.

Cet article explique clairement les étapes simples

Https://medium.com/@kudehinbuoluwaponle/migrate-from-firephp-to-chromephp-in-5-minutes-without-breaking-existing-code-e4afd1b28c5c

2
répondu Kudehinbu Oluwaponle 2017-07-20 13:17:38

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 et QuantumPHP (une fourchette de ChromePHP) le font dans Firefox.

Si vous avez la patience, x-debug est une meilleure option - vous obtenez un aperçu plus profond de PHP, avec la possibilité de mettre en pause votre script, voir ce qui se passe, puis reprendre le script.

2
répondu Frank Forte 2017-11-23 05:01:36

L'un de ces deux fonctionne:

<?php
    $five = 5;
    $six = 6;
?>
<script>
    console.log(<?php echo $five + $six ?>);
</script>


<?php
    $five = 5;
    $six = 6;
    echo("<script>console.log($five + $six);</script>");
?>
1
répondu roybraym 2016-05-04 06:08:52
function console_log( $data ) {
    $bt = debug_backtrace();
    $caller = array_shift($bt);

    if ( is_array( $data ) )
        error_log( end(split('/',$caller['file'])) . ':' . $caller['line'] . ' => ' . implode( ',', $data) );
    else
        error_log( end(split('/',$caller['file'])) . ':' . $caller['line'] . ' => ' . $data );

}
0
répondu btm1 2014-06-11 05:44:57

Voici une fonction pratique. Il est super simple à utiliser, vous permet de passer autant d'arguments que vous le souhaitez, de tout type, et affichera le contenu de l'objet dans la fenêtre de la console du navigateur comme si vous appeliez console.log à partir de JavaScript-mais à partir de 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'

/*
*   Brief:          Print to console.log() from PHP
*   Description:    Print as many strings,arrays, objects, and other data types to console.log from PHP.
*                   To use, just call consoleLog($data1, $data2, ... $dataN) and each dataI will be sent to console.log - note that
*                   you can pass as many data as you want an this will still work.
*
*                   This is very powerful as it shows the entire contents of objects and arrays that can be read inside of the browser console log.
*                   
*                   A tag can be set by passing a string that has the prefix TAG- as one of the arguments. Everytime a string with the TAG- prefix is
*                   detected, the tag is updated. This allows you to pass a tag that is applied to all data until it reaches another tag, which can then
*                   be applied to all data after it.
*
*                   Example:
*                   consoleLog('TAG-FirstTag',$data,$data2,'TAG-SecTag,$data3); 
*                   Result:
*                       FirstTag '...data...'
*                       FirstTag '...data2...'
*                       SecTag   '...data3...' 
*/
function consoleLog(){
    if(func_num_args() == 0){
        return;
    }

    $tag = '';
    for ($i = 0; $i < func_num_args(); $i++) {
        $arg = func_get_arg($i);
        if(!empty($arg)){       
            if(is_string($arg)&& strtolower(substr($arg,0,4)) === 'tag-'){
                $tag = substr($arg,4);
            }else{      
                $arg = json_encode($arg, JSON_HEX_TAG | JSON_HEX_AMP );
                echo "<script>console.log('".$tag." ".$arg."');</script>";
            }       
        }
    }
}

REMARQUE: func_num_args() et func_num_args() sont des fonctions php pour lire un nombre dynamique d'args d'entrée, et permettre à cette fonction d'avoir infiniment beaucoup de console.journaliser les demandes d'un appel de fonction

0
répondu Chris Sprague 2018-07-26 12:45:31