Como posso escrever para consolar em PHP?

é possível escrever texto ou entrar na consola?

O que quero dizer

Tal como no jsp, se imprimirmos algo como {[[0]} estará no console e não na page.

Author: Bhargav Rao, 2010-12-01

23 answers

Firefox

No Firefox pode usar uma extensão chamada FirePHP {[7] } que permite o registo e o despejo de informações das suas aplicações PHP para a consola. Este é um complemento para a extensão de desenvolvimento web impressionante Firebug .

Cromo

No entanto, se estiver a usar o Chrome, existe uma ferramenta de depuração do PHP chamada Logger Chrome ou webug (o webug tem problemas com a ordem dos registos).

Mais recentemente O Clockwork {[[7]} está em desenvolvimento activo que estende as ferramentas de desenvolvimento, adicionando um novo painel para fornecer informações úteis de depuração e análise de perfis. Ele fornece fora da caixa suporte para Laravel 4 e Slim 2 e suporte pode ser adicionado através de sua API extensível.

Usar O Xdebug

Uma melhor maneira de depurar o seu PHP seria através Xdebug . A maioria dos navegadores fornecem extensões auxiliares para o ajudar a passar o texto de 'cookie/query' necessário para inicializar o processo de depuração.

 122
Author: Malachi, 2018-09-14 18:21:09
Ou usa o truque deste site. depuração do PHP para consola

Primeiro precisas de uma pequena função auxiliar de PHP

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

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

Então podes usá - lo assim

debug_to_console( "Test" );
Isto vai criar um uput como este.
Debug Objects: Test
 281
Author: Senador, 2017-03-02 19:23:36
Se está à procura de uma abordagem simples, echo é o JSON.
<script>
    console.log(<?= json_encode($foo); ?>);
</script>
 54
Author: Travis, 2016-12-01 00:23:51

Por omissão, toda a saída vai para stdout, que é a resposta HTTP ou a consola, dependendo se o seu programa é executado pelo Apache ou manualmente na linha de comandos. Mas podes usar error_log para registar e vários fluxos de E / S podem ser escritos com fwrite.

 32
Author: nikc.org, 2010-12-01 10:44:02

Tenta isto está a funcionar.

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

Algumas grandes respostas que adicionam mais profundidade, mas eu precisava de algo mais simples e mais como o comando JS console.log().

Eu uso o PHP em muitos "coleta de dados e se transforma em xml" na aplicação AJAX. o JS console.log não funciona nesse caso; ele quebra a saída xml. (Talvez alguém tenha uma solução para isso?)

O Xdebug etc tinha problemas semelhantes.

A minha solução no Windows:

  • configurar um ficheiro .txt que seja um pouco fácil de aceder e gravar
  • PHP error_log variável no ficheiro .ini para escrever nesse ficheiro
  • abra o ficheiro no Windows file explorer e abra uma área de antevisão para ele
  • Use o comando error_log('myTest'); PHP para enviar mensagens

Esta solução é simples, satisfaz as minhas necessidades A maior parte do tempo, PHP padrão, e a área de antevisão actualiza automaticamente cada vez que o PHP escreve para ela.

 14
Author: Klompenrunner, 2015-06-06 08:03:25

Como autor da página ligada na resposta popular acima, gostaria de adicionar a minha última versão desta função auxiliar simples, muito mais sólida.

Eu uso json_encode() para fazer uma verificação para o tipo var não necessário e adicionar também um buffer para resolver problemas com frameworks, não há um retorno sólido ou uso excessivo 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;
}

Utilização

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

Imagem do resultado

Também um exemplo simples como imagem para entender muito mais.

enter image description here

 14
Author: bueltge, 2017-05-23 12:26:32
Acho isto útil.
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;
    }
}

E usa-o como:

<?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);
?>

Quais saídas na consola:

Important
 Less Important
     Even Less Important
Again Important

E você pode desligar registos menos importantes limitando-os usando o valor de depuração $

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

Cria um

      <div>

Com o

    display="none"

Para que o div não seja exibido, mas o

    console.log()

A função é criada em javascript. Então recebes a mensagem na consola.

 11
Author: 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
Author: ashraf mohammed, 2014-03-12 14:52:36

Curto e fácil, para arrays, strings ou também objetos.

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

Acho que pode ser usado ...

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
Author: Pankaj Bisht, 2018-05-16 08:59:41

Se quiser escrever no ficheiro de registo do PHP, e não na consola de JavaScript, pode usar isto:

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

Referência: http://php.net/manual/en/function.error-log.php

 6
Author: Dan Green-Leipciger, 2016-11-03 15:52:02

Para o Chrome existe uma extensão chamada Logger Chrome que permite registar as mensagens de PHP.

Os DevTools do Firefox até têm suporte integrado para o protocolo Chrome Logger.

Para activar o registo, só precisa de salvar o ChromePhp .ficheiro php ' no seu projecto. Então ele pode ser usado assim:

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

exemplo retirado da Página do GitHub .

A saída pode então parecer isto:

Server log within Firefox DevTools

 5
Author: Sebastian Zartner, 2016-11-23 10:05:29

Também existe uma grande extensão do Google Chrome Consola de PHP com biblioteca de php {[3] } que permite:

  • ver erros e excepções na consola de JavaScript Chrome e nos popups de notificações.
  • despeja qualquer variável do tipo.
  • executar o código PHP remotamente.
  • proteger o acesso por senha.
  • registo da consola de grupo a pedido.
  • Saltar para o ficheiro de erro:linha no seu editor de texto.
  • copiar os dados de erro/depuração para a área de transferência (para testador).
 4
Author: barbushin, 2013-12-09 04:25:03

Abandonei tudo o que precede em favor de http://phptoolcase.com/guides/ptc-debug-guide.html não consigo elogiá-lo o suficiente!

Basta clicar numa das páginas no topo à direita, ou no" clique aqui " para expandir/esconder.

Repare nas diferentes "categorias". Você pode clicar em qualquer array para expandi-lo/colpase.

Na página web

"Principais Características:

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

" enter image description here

 3
Author: Mawg, 2014-04-13 02:57:35

Grande post obrigado, eu estava procurando uma maneira de depurar o código em um plugin Wordpress que eu estava desenvolvendo e veio através deste post.

Eu peguei os bits de código que são mais aplicáveis a mim a partir das respostas acima e combinei estes em uma função que eu posso usar para depuração Wordpress. A função é:

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>";
}

A utilização é a seguinte:

$txt = 'This is a test string';
$sample_array = array('cat', 'dog', 'pig', 'ant', 'fly');
debug_log( $txt,'',7 );
debug_log( $sample_array );
Espero que alguém ache esta função útil.

Se esta função for usada com o desenvolvimento do Wordpress, a função deve ser colocada nas funções.arquivo php do tema criança e pode então ser chamado em qualquer lugar do Código.

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

Interacção PHP e Javascript.

 3
Author: 0DAYanc, 2017-08-03 23:42:36
A partir de 2017, firebug e, portanto, firephp foram desativados.

Eu escrevi algumas pequenas modificações na ferramenta chromephp para permitir a migração sem emenda do firephp para firebug para depuração através da consola.

Este artigo explica em passos simples e claros

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

 2
Author: Kudehinbu Oluwaponle, 2017-07-20 13:17:38

Para As chamadas Ajax ou as respostas xml / json, onde não se quer mexer com o corpo, é necessário enviar Registos através de cabeçalhos http e adicioná-los à consola com uma extensão web. É assim que o FirePHP e QuantumPHP (um garfo de ChromePHP) o fazem no Firefox.

Se você tem a paciência, x-debug é uma opção melhor-você tem uma visão mais profunda sobre o PHP, com a capacidade de pausar o seu script, ver o que está acontecendo, em seguida, retomar o script.

 2
Author: Frank Forte, 2017-11-23 05:01:36

Qualquer um destes dois está a funcionar:

<?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
Author: 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
Author: btm1, 2014-06-11 05:44:57
Aqui está uma função útil. É super simples de usar, permite-lhe passar o máximo de argumentos que quiser, de qualquer tipo, e irá mostrar o conteúdo do objecto na janela da consola do navegador como se chamasse consola.registar a partir de JavaScript-mas a partir de PHP

Nota, você pode usar tags também passando 'TAG-YourTag' e será aplicado até que outra tag seja lida, por exemplo, '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>";
            }       
        }
    }
}

NOTA: func_num_args() e func_num_args() são php funções para ler um número dinâmico de args de entrada, e permitir que esta função tenha infinitamente muitos consoles.registar os pedidos de uma chamada de função

 0
Author: Chris Sprague, 2018-07-26 12:45:31