Gostaria de depurar algum código PHP, mas acho que imprimir um log para tela ou arquivo é bom para mim.
Como devo imprimir um log no código PHP?
O usual print
/ printf
parece ir para a saída HTML, não para o console.
Eu tenho o servidor Apache executando o código PHP.
printf
pergunta obteria isso muitas upvotes ...Respostas:
Um truque menos conhecido é que o mod_php mapeia o stderr para o log do Apache. Além disso, existe um fluxo para isso, portanto,
file_put_contents('php://stderr', print_r($foo, TRUE))
será muito bom despejar o valor$foo
no log de erros do Apache.fonte
var_export($foo, true)
vez deprint_r($foo, true)
seprint_r
não fornecer as informações de tipo necessárias.pode ser útil
fonte
Você pode usar o error_log para enviar aos seus servidores o arquivo de log de erros (ou outro arquivo opcional, se desejar)
fonte
Se você estiver no Linux:
ou
e depois no console
Isso mostrará continuamente a última linha colocada no arquivo.
fonte
Você precisa mudar seu estado de espírito. Você está escrevendo PHP, e não o que mais você está acostumado a escrever. A depuração no PHP não é feita em um ambiente de console.
No PHP, você tem 3 categorias de soluções de depuração:
Aprenda a usá-los em vez de tentar fazer com que o PHP se comporte como qualquer outra linguagem com a qual você esteja acostumado.
fonte
Você está depurando no console? Existem várias opções para depuração do PHP. A função mais comum usada para depuração rápida e suja é var_dump .
Dito isto e fora do caminho, embora var_dump seja incrível e muitas pessoas façam tudo com isso, existem outras ferramentas e técnicas que podem apimentar um pouco.
Coisas para ajudar na depuração de uma página da Web, agrupe as
<pre> </pre>
tags em sua declaração de despejo para fornecer a formatação adequada em matrizes e objetos.Ou seja:
E, por último mas não menos importante, verifique se a depuração do tratamento de erros está configurada para exibir erros. Pode ser necessário adicionar isso na parte superior do seu script se você não puder acessar a configuração do servidor.
Boa sorte!
fonte
Se você não deseja integrar uma estrutura como o Zend , pode usar o método trigger_error para fazer logon no log de erros do php.
fonte
Simplesmente é o trigger_error:
mas você não pode colocar matrizes ou objetos, portanto, use
fonte
Você também pode gravar em um arquivo como este:
Verifique se as permissões adequadas estão definidas para que o php possa acessar e gravar no arquivo (
775
).fonte
Você pode usar o módulo php curl para fazer chamadas para http://liveoutput.com/ . Isso funciona muito bem em um ambiente corporativo seguro, onde existem certas restrições no php.ini que restringem o uso de
file_put_contents
.fonte
Esta é uma ótima ferramenta para depuração e registro de php: PHp Debugger & Logger
Funciona imediatamente com apenas 3 linhas de código. Ele pode enviar mensagens para o console js para depuração do ajax e pode substituir o manipulador de erros. Ele também despeja informações sobre variáveis como var_dump () e print_r (), mas em um formato mais legível. Ferramenta muito boa!
fonte
Eu usei muitos deles, mas como geralmente preciso depurar durante o desenvolvimento e como desenvolvo no host local, segui os conselhos de outras pessoas e agora escrevo no console de depuração JavaScript do navegador (consulte http: //www.codeforest. net / debugging-php-in-browsers-javascript-console ).
Isso significa que posso olhar para a página da web que meu PHP está gerando no meu navegador e pressionar F12 para mostrar / ocultar rapidamente qualquer rastreamento de depuração.
Como eu estou constantemente olhando as ferramentas de desenvolvedor para depurador, layout CSS, etc, faz sentido olhar para o meu loggon do PHP lá.
Se alguém nos decidir esse código, fiz uma pequena alteração. Depois de
function debug($name, $var = null, $type = LOG) {
Eu adicionei
$name = 'PHP: ' . $name;
Isso ocorre porque o PHP do meu servidor gera HTML compatível com JavaScript e acho útil distinguir entre saída do PHP e JS.
(Nota: no momento, estou atualizando isso para permitir ativar e desativar diferentes tipos de saída: do PHP, do JS e do acesso ao banco de dados)
fonte
Eu uso o cakephp, então eu uso:
fonte
Você pode usar:
fonte
Você pode usar
ou se você quiser imprimir essa declaração em um log, poderá usar
fonte