PHP
Depuración
Buscar..
Variables de dumping
La función var_dump
permite volcar el contenido de una variable (tipo y valor) para la depuración.
Ejemplo:
$array = [3.7, "string", 10, ["hello" => "world"], false, new DateTime()];
var_dump($array);
Salida:
array(6) {
[0]=>
float(3.7)
[1]=>
string(6) "string"
[2]=>
int(10)
[3]=>
array(1) {
["hello"]=>
string(5) "world"
}
[4]=>
bool(false)
[5]=>
object(DateTime)#1 (3) {
["date"]=>
string(26) "2016-07-24 13:51:07.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(13) "Europe/Berlin"
}
}
Mostrando errores
Si desea que PHP muestre errores de tiempo de ejecución en la página, debe habilitar display_errors
, ya sea en php.ini
o usando la función ini_set
.
Puede elegir qué errores mostrar, con la función error_reporting
(o ini), que acepta las constantes E_*
, combinadas usando operadores bitwise .
PHP puede mostrar errores en formato de texto o HTML, dependiendo de la configuración html_errors
.
Ejemplo:
ini_set("display_errors", true);
ini_set("html_errors", false); // Display errors in plain text
error_reporting(E_ALL & ~E_USER_NOTICE); // Display everything except E_USER_NOTICE
trigger_error("Pointless error"); // E_USER_NOTICE
echo $nonexistentVariable; // E_NOTICE
nonexistentFunction(); // E_ERROR
Salida de texto sin formato : (el formato HTML difiere entre las implementaciones)
Notice: Undefined variable: nonexistentVariable in /path/to/file.php on line 7
Fatal error: Uncaught Error: Call to undefined function nonexistentFunction() in /path/to/file.php:8
Stack trace:
#0 {main}
thrown in /path/to/file.php on line 8
NOTA: Si tiene el informe de errores deshabilitado en php.ini y lo habilita durante el tiempo de ejecución, algunos errores (como los errores de análisis) no se mostrarán, ya que ocurrieron antes de que se aplicara la configuración de tiempo de ejecución.
La forma común de manejar error_reporting
es habilitarlo completamente con la constante E_ALL
durante el desarrollo, y deshabilitar mostrarlo públicamente con display_errors
en la etapa de producción para ocultar las partes internas de sus scripts.
phpinfo ()
Advertencia
Es imperativo que phpinfo
solo se use en un entorno de desarrollo. Nunca libere el código que contiene phpinfo
en un entorno de producción
Introducción
Dicho esto, puede ser una herramienta útil para comprender el entorno PHP (SO, configuración, versiones, rutas, módulos) en el que está trabajando, especialmente cuando persigue un error. Es una simple función incorporada:
phpinfo();
Tiene un parámetro $what
que permite personalizar la salida. El valor predeterminado es INFO_ALL
, lo que hace que muestre toda la información y se usa comúnmente durante el desarrollo para ver el estado actual de PHP.
Puede pasar las constantes del parámetro INFO_*
, combinadas con operadores bitwise para ver una lista personalizada.
Puede ejecutarlo en el navegador para una apariencia detallada bien formateada. También funciona en PHP CLI, donde puede canalizarlo a less
para una vista más fácil.
Ejemplo
phpinfo(INFO_CONFIGURATION | INFO_ENVIRONMENT | INFO_VARIABLES);
Esto mostrará una lista de directivas de PHP ( ini_get
), entorno ( $_ENV
) y variables predefinidas .
Xdebug
Xdebug es una extensión de PHP que proporciona capacidades de depuración y creación de perfiles.
Utiliza el protocolo de depuración DBGp.
Hay algunas características agradables en esta herramienta:
- apilar trazas de errores
- Máxima protección de nivel de anidación y seguimiento del tiempo.
- Reemplazo útil de la función
var_dump()
estándar para mostrar variables - permite registrar todas las llamadas de función, incluidos los parámetros y devolver valores a un archivo en diferentes formatos
- análisis de cobertura de código
- información de perfil
- depuración remota (proporciona una interfaz para los clientes del depurador que interactúan con scripts PHP en ejecución)
Como puede ver, esta extensión es perfectamente adecuada para el entorno de desarrollo. Especialmente la función de depuración remota puede ayudarlo a depurar su código php sin numerosos var_dump y usar el proceso de depuración normal como en los C++
o Java
.
Generalmente la instalación de esta extensión es muy simple:
pecl install xdebug # install from pecl/pear
Y activalo en tu php.ini:
zend_extension="/usr/local/php/modules/xdebug.so"
En casos más complicados ver estas instrucciones.
Cuando uses esta herramienta debes recordar que:
XDebug no es adecuado para entornos de producción
phpversion ()
Introducción
Cuando se trabaja con varias bibliotecas y sus requisitos asociados, a menudo es necesario conocer la versión del analizador PHP actual o uno de sus paquetes.
Esta función acepta un único parámetro opcional en forma de nombre de extensión: phpversion('extension')
. Si la extensión en cuestión está instalada, la función devolverá una cadena que contiene el valor de la versión. Sin embargo, si la extensión no instalada FALSE
será devuelta. Si no se proporciona el nombre de la extensión, la función devolverá la versión del propio analizador PHP.
Ejemplo
print "Current PHP version: " . phpversion();
// Current PHP version: 7.0.8
print "Current cURL version: " . phpversion( 'curl' );
// Current cURL version: 7.0.8
// or
// false, no printed output if package is missing
Informe de errores (utilícelos ambos)
// this sets the configuration option for your environment
ini_set('display_errors', '1');
//-1 will allow all errors to be reported
error_reporting(-1);