É possível escrever uma string ou fazer login no console?
O que eu quero dizer
Assim como no JSP, se imprimirmos algo como system.out.println("some")
, estará lá no console, não em uma página.
Raposa de fogo
No Firefox, você pode usar uma extensão chamada FirePHP, que permite o registro e o despejo de informações de seus aplicativos PHP no console. Este é um complemento para a incrível extensão de desenvolvimento web Firebug .
cromada
No entanto, se você estiver usando o Chrome, existe uma ferramenta de depuração do PHP chamada Chrome Logger ou webug (o webug tem problemas com a ordem dos logs).
Mais recentemente, o Clockwork está em desenvolvimento ativo, estendendo as Ferramentas do desenvolvedor, adicionando um novo painel para fornecer informações úteis sobre depuração e criação de perfil. Ele fornece suporte imediato ao Laravel 4 e Slim 2 e o suporte pode ser adicionado por meio de sua API extensível.
Usando o Xdebug
Uma maneira melhor de depurar seu PHP seria via Xdebug . A maioria dos navegadores fornece extensões auxiliares para ajudá-lo a passar a string de cookie / consulta necessária para inicializar o processo de depuração.
Ou você usa o truque do PHP Debug para console .
Primeiro você precisa de uma pequena função auxiliar PHP
Então você pode usá-lo assim:
Isso criará uma saída como esta:
fonte
"Debug Objects: " . $data . ""
$data
aparecer na saída, você não digitou a função exatamente como mostrado. Observe atentamente as aspas simples e duplas, para garantir que correspondam ao código acima.$data
é uma variável php; no momento em que a página é enviada ao navegador, essa variável php será substituída pelo parâmetro passado paradebug_to_console
. O navegador nunca deve ver$data
. (Se você olharpage source
no navegador, ele não deveria dizer$data
.)Se você está procurando uma abordagem simples, eco como JSON:
fonte
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>"; }
Por padrão, toda saída é acessada
stdout
, que é a resposta HTTP ou o console, dependendo de seu script ser executado pelo Apache ou manualmente na linha de comando. Mas você pode usarerror_log
para o log e vários fluxos de E / S podem ser gravados comfwrite
.fonte
error_log
é o que eu precisei enviar para o terminal a partir do servidor da Web embutido em PHPTente o seguinte. Está funcionando:
fonte
Cria um
com o
para que a div não seja exibida, mas o
A função é criada em javascript. Então você recebe a mensagem no console.
fonte
div
. se você tiver apenas um<script>
bloco, nada será exibido no navegador.json.encode
que as aspas não quebrem sua linha de código. Por exemplo:echo "<script>console.log(".json_encode($msg).")</script>";
Como autor da página vinculada na resposta popular , gostaria de adicionar minha última versão desta função auxiliar simples. É muito mais sólido.
Eu uso
json_encode()
para verificar se o tipo de variável não é necessário e também adicionar um buffer para resolver problemas com estruturas. Não há um retorno sólido ou uso excessivo deheader()
.Uso
Captura de tela do resultado
Também um exemplo simples como imagem para entender muito mais fácil:
fonte
Eu acho que pode ser usado -
fonte
Algumas ótimas respostas que adicionam mais profundidade; mas eu precisava de algo mais simples e mais parecido com o
console.log()
comando JavaScript .Eu uso PHP em muitas "coleta de dados e viro XML" em aplicativos Ajax. O JavaScript
console.log
não funciona nesse caso; quebra a saída XML.Xdebug, etc. teve problemas semelhantes.
Minha solução no Windows:
.txt
arquivo de fácil acesso e gravávelerror_log
variável PHP no.ini
arquivo para gravar nesse arquivoerror_log('myTest');
comando PHP para enviar mensagensEsta solução é simples e atende às minhas necessidades na maioria das vezes. PHP padrão, e o painel de visualização é atualizado automaticamente toda vez que o PHP grava nele.
fonte
json_encode
também resolveria o problema? Nesse caso, pode ser que as aspas da mensagem tenham interferido nas aspas do script. (por exemploecho "<script>console.log(".json_encode($msg).")</script>";
:). Caso contrário, estou curioso para saber qual foi o problema que causou a quebra do script console.log e como / por que sua solução corrigiu isso. Sua solução é boa - só estou tentando aprender mais sobre as condições que causaramconsole.log
a quebra da saída xml. Em muitos casos, um log de erros como você fez é muito melhor do que um rápidoconsole.log
.Interação PHP e JavaScript.
fonte
Acho isso útil:
E use-o como:
Quais saídas no console:
E você pode desativar os logs menos importantes limitando-os usando o valor $ debug.
fonte
console('Even Less Important' ,6 , $debug);
isso, não será exibido no console? Por quê então? é algo acima de 5 não exibido$output = '<script>console.log("' . str_repeat(" ", $priority-1)
e. '");</script>';
. Somenteimplode(",", $data)
e$data
é diferente.Curto e fácil, para matrizes, strings ou também objetos.
fonte
fonte
Se você deseja gravar no arquivo de log PHP, e não no console JavaScript, você pode usar isto:
error_log("This is logged only to the PHP log")
Referência: error_log
fonte
Para o Chrome, existe uma extensão chamada Chrome Logger, que permite registrar mensagens PHP.
O Firefox DevTools ainda possui suporte integrado ao protocolo Chrome Logger .
Para habilitar o log, basta salvar o arquivo 'ChromePhp.php' no seu projeto. Então pode ser usado assim:
Exemplo retirado da página do GitHub .
A saída pode ficar assim:
fonte
"ccampbell/chromephp": "*"
Há também uma grande extensão do Google Chrome, o PHP Console , com uma biblioteca PHP que permite:
error file:line
seu editor de texto.fonte
Eu estava procurando uma maneira de depurar o código em um plugin do WordPress que estava desenvolvendo e me deparei com este post.
Peguei os bits de código mais aplicáveis a mim de outras respostas e os combinei em uma função que eu posso usar para depurar o WordPress. A função é:
O uso é o seguinte:
Se essa função for usada no desenvolvimento do WordPress, ela deverá ser colocada no
functions.php
arquivo do tema filho e poderá ser chamada em qualquer lugar do código.fonte
Eu abandonei tudo isso em favor do Debugger & Logger . Não posso elogiá-lo o suficiente!
Basta clicar em uma das guias no canto superior direito ou no "clique aqui" para expandir / ocultar.
Observe as diferentes "categorias". Você pode clicar em qualquer matriz para expandi-la / recolhê-la.
Na página da web
fonte
A partir de 2017, o Firebug e, portanto, o FirePHP foram desativados .
Escrevi algumas pequenas modificações na ferramenta ChromePHP para permitir a migração direta do FirePHP para o Firebug para depuração via console.
Este artigo explica em etapas fáceis claras
Migre do FirePHP para o ChromePHP em 5 minutos (sem quebrar o código existente)
fonte
Para chamadas Ajax ou respostas XML / JSON, nas quais você não deseja mexer com o corpo, é necessário enviar logs por meio de cabeçalhos HTTP e adicioná-los ao console com uma extensão da web. É assim que o FirePHP (não está mais disponível) e o QuantumPHP (um fork do ChromePHP) fazem isso no Firefox.
Se você tiver paciência, o x-debug é uma opção melhor - você obtém uma visão mais profunda do PHP, com a capacidade de pausar seu script, ver o que está acontecendo e, em seguida, retomar o script.
fonte
Talvez eu esteja atrasado para uma festa, mas estava procurando uma implementação da função de log que:
console.log()
,console.log()
.Portanto, a saída é assim:
(O snippet abaixo é testado em php
7.2.11
. Não tenho certeza sobre sua compatibilidade com versões anteriores do php. Também pode ser um problema para javascript (em termos de navegadores antigos), porque cria uma vírgula à direita após osconsole.log()
argumentos - o que não é legal atéES 2017
.)fonte
Qualquer um destes dois está funcionando:
fonte
Aqui está a minha solução, a coisa boa sobre este é que você pode passar quantos parâmetros quiser.
Chame assim
Agora você deve conseguir ver a saída em seu console, feliz codificação :)
fonte
Usar:
fonte
Aqui está uma função útil. É super simples de usar, permite passar quantos argumentos você quiser, de qualquer tipo, e exibirá o conteúdo do objeto na janela do console do navegador como se você tivesse chamado console.log do JavaScript - mas do PHP
Observe que você também pode usar tags passando 'TAG-YourTag', e ele será aplicado até que outra tag seja lida, por exemplo, 'TAG-YourNextTag'
NOTA: func_num_args () e func_num_args () são funções PHP para ler um número dinâmico de argumentos de entrada e permitem que essa função tenha infinitas solicitações console.log de uma chamada de função.
fonte
Embora essa seja uma pergunta antiga, eu tenho procurado por isso. Aqui está minha compilação de algumas soluções respondidas aqui e algumas outras idéias encontradas em outros lugares para obter uma solução única para todos.
CÓDIGO:
TESTES E USO:
O uso é simples. Inclua a primeira função para postar no console manualmente. Use a segunda função para desviar o tratamento de exceções php. O teste a seguir deve dar uma idéia.
EXPLICAÇÃO:
A função
console($data, $is_error, $file, $fn)
pega string ou array como primeiro argumento e a publica no console usando js insert.O segundo argumento é um sinalizador para diferenciar logs normais contra erros. Para erros, estamos adicionando ouvintes de eventos para nos informar por meio de alertas se algum erro foi lançado, também destacando no console. Esse sinalizador é padronizado como false.
O terceiro e o quarto argumentos são declarações explícitas de números de arquivos e linhas, o que é opcional. Se ausentes, o padrão é usar a função php predefinida
debug_backtrace()
para buscá-las para nós.A próxima função
exceptions_to_console($svr, $str, $file, $ln)
tem quatro argumentos na ordem chamada pelo manipulador de exceção padrão do php. Aqui, o primeiro argumento é severity, que fazemos uma verificação cruzada de constantes predefinidas usando a funçãoseverity_tag($code)
para fornecer mais informações sobre erros.AVISO PRÉVIO :
O código acima usa funções e métodos JS que não estão disponíveis em navegadores mais antigos. Para compatibilidade com versões mais antigas, ele precisa de substituições.
O código acima é para ambientes de teste, onde você sozinho tem acesso ao site. Não use isso em sites ao vivo (de produção).
SUGESTÕES:
A primeira função
console()
gerou alguns avisos, então os agrupei em outra função e chamei-a usando o operador de controle de erro '@'. Isso pode ser evitado se você não se importar com os avisos.Por último, mas não menos importante, os alertas exibidos podem ser irritantes durante a codificação. Para isso, estou usando este sinal sonoro (encontrado na solução: https://stackoverflow.com/a/23395136/6060602 ) em vez de alertas pop-up. É bem legal e as possibilidades são infinitas, você pode tocar suas músicas favoritas e tornar a codificação menos estressante.
fonte