php - para - manual de programacion android pdf
¿Cómo imprimir un registro de depuración? (15)
¿Estás depurando en la consola? Hay varias opciones para depurar PHP. La función más común utilizada para la depuración rápida y sucia es var_dump .
Dicho esto y fuera del camino, aunque var_dump es increíble y mucha gente hace todo con solo eso, hay otras herramientas y técnicas que pueden darle un poco de sabor.
Cosas para ayudar si se depura en una página web, envuelva <pre> </pre>
etiquetas <pre> </pre>
alrededor de su declaración de vuelco para darle el formato correcto en arrays y objetos.
Es decir:
<div> some html code ....
<a href="<?php $tpl->link;?>">some link to test</a>
</div>
dump $tpl like this:
<pre><?php var_dump($tpl); ?></pre>
Y, por último pero no menos importante, asegúrese de que la depuración de su manejo de errores esté configurada para mostrar errores. Puede necesitar agregar esto en la parte superior de su script si no puede acceder a la configuración del servidor para hacerlo.
error_reporting(E_ALL);
ini_set(''display_errors'', ''1'');
¡Buena suerte!
Me gustaría depurar este código, pero supongo que "imprimir un registro en pantalla o archivo" está bien para mí.
¿Cómo debo imprimir un log en el código php? La print/printf
habitual parece ir a la salida de HTML, no a la consola.
Tengo un servidor apache ejecutando el código PHP.
Debes cambiar tu estado de ánimo. Está escribiendo PHP, no importa lo que sea que esté acostumbrado a escribir. La depuración en PHP no se realiza en un entorno de consola.
En PHP, tiene 3 categorías de soluciones de depuración:
- Salida a una página web (consulte la biblioteca dBug para obtener una vista más clara de las cosas).
- Escribir en un archivo de registro
- En la sesión de depuración con xDebug
Aprenda a usar esos en lugar de tratar de hacer que PHP se comporte como cualquier otro idioma al que esté acostumbrado.
Esta es una gran herramienta para depurar y registrar php: PHp Debugger & Logger
Funciona de la caja con solo 3 líneas de código. Puede enviar mensajes a la consola js para la depuración ajax y puede reemplazar el controlador de errores. También descarga información sobre variables como var_dump () e print_r (), pero en un formato más legible. Muy buena herramienta!
He usado muchos de estos, pero dado que generalmente necesito depurar durante el desarrollo, y desde que desarrollo en localhost, he seguido los consejos de los demás y ahora escribo en la consola de depuración de JavaScript del navegador (consulte http://www.codeforest.net/debugging-php-in-browsers-javascript-console ).
Eso significa que puedo mirar la página web que mi PHP está generando en mi navegador y presionar F12 para mostrar / ocultar rápidamente cualquier rastro de depuración.
Como siempre estoy buscando herramientas de desarrollador para depurador, diseño de CSS, etc., tiene sentido ver mi log de PHP allí.
Si alguien nos decide ese código, hice un pequeño cambio. Después
function debug($name, $var = null, $type = LOG) {
yo añadí
$name = ''PHP: '' . $name;
Esto se debe a que mi lado del servidor, PHP, genera HTML que concuerda con JavaScript y me resulta útil distinguir entre los resultados de PHP y JS.
(Nota: actualmente estoy actualizando esto para permitirme activar y desactivar diferentes tipos de resultados: desde PHP, desde JS, y acceso a la base de datos)
Puede usar error_log para enviar a su servidor el archivo de registro de errores (o un otro archivo opcional si lo desea)
Puede usar el módulo php curl para hacer llamadas a http://liveoutput.com/ . Esto funciona muy bien en un entorno corporativo seguro donde existen ciertas restricciones en php.ini que restringen el uso de file_put_contents
.
Puedes usar
<?php
{
AddLog("anypage.php","reason",ERR_ERROR);
}
?>
o si desea imprimir esa declaración en un registro, puede usar
AddLog("anypage.php","string: ".$string,ERR_DEBUG_LOW);
Puedes usar:
<?php
echo ''<script>console.log("debug log")</script>'';
?>
Si estás en Linux:
file_put_contents(''your_log_file'', ''your_content'');
o
error_log (''your_content'', 3, ''your_log_file'');
y luego en la consola
tail -f your_log_file
Esto mostrará continuamente la última línea puesta en el archivo.
Si no desea integrar un marco como Zend , puede utilizar el método trigger_error para iniciar sesión en el registro de errores de php.
Simplemente es trigger_error:
trigger_error("My error");
pero no puedes poner arrays u objetos, por lo tanto,
var_dump
También puede escribir en un archivo como este:
$logFilePath = ''../logs/debug.text'';
ob_start();
// if you want to concatenate:
if (file_exists($logFilePath)) {
include($logFilePath);
}
// for timestamp
$currentTime = date(DATE_RSS);
// echo log statement(s) here
echo "/n/n$currentTime - [log statement here]";
$logFile = fopen($logFilePath, ''w'');
fwrite($logFile, ob_get_contents());
fclose($logFile);
ob_end_flush();
Asegúrese de que se hayan establecido los permisos adecuados para que php pueda acceder y escribir en el archivo ( 775
).
Un truco menos conocido es que mod_php asigna stderr al registro de Apache. Y, hay una secuencia para eso, así que file_put_contents(''php://stderr'', print_r($foo, TRUE))
fácilmente vaciará el valor de $foo
en el registro de errores de Apache.
Yo uso cakephp entonces uso:
$this->log(YOUR_STRING_GOES_HERE, ''debug'');
error_log(print_r($variable, TRUE));
podría ser útil