visual sublime studio php7 debug configurar code chrome php xdebug

php - sublime - Comprueba si xdebug está funcionando



xdebug php7 2 (7)

Después de un amargo período de casi 24 horas tratando de hacer que xdebug funcione con Netbeans 8.0.2, he encontrado una solución que, espero, funcione para todos los stacks relacionados con Ubuntu y Ubuntu.

Problema número 1: las versiones de PHP y xdebug deben ser compatibles

A veces, si está ejecutando una instalación de Linux y apt-get para instalar xdebug, no obtendrá la versión correcta de xdebug. En mi caso, tenía la última versión de php pero una versión anterior de xdebug. Eso debe ser debido a mi versión actual de Xubuntu. Las versiones de software dependen de los repositorios, que dependen de la versión del SO que esté ejecutando.

Solución: PHP tiene un prolijo administrador de extensión llamado PECL. Siga las instrucciones dadas here para tenerlo en funcionamiento. En primer lugar, como señaló un miembro en los comentarios, debe instalar el paquete de desarrollador de PHP para que PECL funcione:

sudo apt-get install php5-dev

Luego, usando PECL, podrá instalar la última versión estable de xdebug:

sudo pecl install php5-xdebug

Una vez que lo hagas, se instalará la versión correcta de xdebug pero no estará lista para su uso. Después de eso, tendrás que habilitarlo. He visto muchas sugerencias sobre cómo hacerlo, pero el hecho es que PHP necesita algunos módulos para ser habilitados tanto para el cliente como para el servidor, en este caso Apache. Parece que la mejor práctica aquí es usar el método integrado de habilitar módulos, llamado php5enmod. El uso se describe here .

Problema número 2: habilite el módulo correctamente

Primero, deberás ingresar a la carpeta / etc / php5. Allí, encontrará 3 carpetas, apache2, cli y mods_available. La carpeta mods_available contiene archivos de texto con instrucciones para activar un módulo determinado. La convención de nombre es [módulo] .ini. Eche un vistazo a algunos de ellos, vea cómo están configurados.

Ahora tendrá que crear su archivo ini dentro de la carpeta mods_available. Crea un archivo llamado xdebug.ini, y dentro del archivo, pega esto:

[xdebug] zend_extension = /usr/lib/php5/20121212/xdebug.so xdebug.remote_enable=on xdebug.remote_handler=dbgp xdebug.remote_mode=req xdebug.remote_host=localhost xdebug.remote_port=9000

Asegúrese de que la directiva [xdebug] esté presente, exactamente como en el ejemplo anterior. Es imperativo que el módulo funcione. De hecho, solo copia y pega todo el código, serás una persona más feliz de esa manera. :RE

Nota: la ruta zend_extension es muy importante. En este ejemplo, está apuntando a la versión actual del motor de PHP, pero primero debe ir a / usr / lib / php5 y asegurarse de que la carpeta que está nombrada con números sea la correcta. Ajuste el nombre a lo que sea que vea allí, y mientras lo hace, verifique dentro de la carpeta para asegurarse de que xdebug.so esté realmente allí. Debería ser, si hicieras todo bien.

Ahora, con su xdebug.ini creado, es hora de habilitar el módulo. Para hacerlo, abra una consola y escriba:

php5enmod xdebug

Si todo salió bien, PHP creó dos enlaces a este archivo, uno dentro de /etc/php5/apache2/conf.d y otro dentro de /etc/php5/cli/conf.d

Reinicia tu servidor Apache y escribe esto en la consola:

php -v

Deberías obtener algo como esto:

PHP 5.5.9-1ubuntu4.6 (cli) (built: Feb 13 2015 19:17:11) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies with Xdebug v2.3.1, Copyright (c) 2002-2015, by Derick Rethans

Lo que significa que el cliente PHP leyó su archivo xdebug.ini y cargó el módulo xdebug.so. Hasta aquí todo bien.

Ahora crea un script phpinfo en algún lugar de tu servidor web y ejecútalo. Esto es lo que debería ver, si todo salió bien:

Si ves esto, Apache también cargó el módulo, y probablemente estés listo para comenzar. Ahora veamos si Netbeans depurará correctamente. Cree un script muy simple, agregue algunas variables, déles valores y establezca un punto de corte en ellos. Ahora presiona CTRL + F5, haz clic en "entrar" en tu panel de depuración y ve si obtienes algo como esto:

Recuerde comprobar la configuración de Netbeans para la depuración, en tools / options / php. Debería verse algo como esto:

Espero que esto arroje algo de luz sobre este problema bastante oscuro y confuso.

¡Los mejores deseos!

Sin instalar un texteditor o un IDE, ¿es posible probar si xdebug está funcionando, es decir, si puede depurar el código php?

La única parte que viene xdebug en phpinfo () es la siguiente:

Archivos .ini adicionales analizados /etc/php5/apache2/conf.d/mysql.ini, /etc/php5/apache2/conf.d/mysqli.ini, /etc/php5/apache2/conf.d/pdo.ini, /etc/php5/apache2/conf.d/pdo_mysql.ini, /etc/php5/apache2/conf.d/xdebug.ini

No se menciona en el phpinfo () en ningún otro lado.


En su pregunta mencionó que su phpinfo indicaba que apache estaba cargando la configuración de xdebug en /etc/php5/apache2/conf.d/xdebug.ini. En muchas de las instrucciones en línea, puede observar que le piden que ponga xdebug config en php. .ini (y eso es lo que hice) SIN EMBARGO, si la configuración está configurada en /etc/php5/apache2/conf.d/xdebug.ini, entonces debe eliminar la configuración de configuración [XDebug] de / etc / php5 / apache2 /php.ini y colóquelo en /etc/php5/apache2/conf.d/xdebug.ini INSTEAD. Una vez que eliminé /etc/php5/apache2/php.ini y puse /etc/php5/apache2/conf.d/xdebug.ini en su lugar, y reinicié apache, ¡funcionó!

Por lo tanto, en su /etc/php5/apache2/conf.d/xdebug.ini, coloque lo siguiente:

[XDebug] zend_extension="/usr/lib/php5/20121212+lfs/xdebug.so" xdebug.remote_enable=1 xdebug.remote_port="9000" xdebug.profiler_enable=1 xdebug.profiler_output_dir="/home/paul/tmp" xdebug.remote_host="localhost" xdebug.remote_handler="dbgp"; xdebug.idekey="phpstorm_xdebug"

luego quítelo de /etc/php5/apache2/php.ini si lo coloca allí también.

Entonces hazlo:

sudo service apache2 restart

¡Entonces debería funcionar!


Intente lo siguiente, debe devolver "existe" o "no existe":

<?php echo (extension_loaded(''xdebug'') ? '''' : ''non ''), ''exists'';


Si está utilizando Eclipse , tenga en cuenta que, mientras se ejecuta en el modo XDebug, la constante mágica __FILE__ siempre se evaluará para:

xdebug://debug-eval

Por lo tanto, la siguiente verificación será verdadera si su sesión está bajo XDebug:

$is_xdebug = false !== strpos(__FILE__,''xdebug''); // true while on XDebug


Sin realmente hacer algunas depuraciones, supongo que no puedes estar seguro de que un depurador esté funcionando.

Pero puedes estar bastante seguro, supongo que uno debería asumir que si algunos aspectos de xDebug están funcionando, entonces todo estaría funcionando.

Dado que puede confirmar que xDebug está instalado y en funcionamiento, intente lo siguiente:

1) phpinfo() - esto le mostrará todas las extensiones que están cargadas, incluyendo xDebug. Si está allí, entonces es una apuesta segura que está funcionando.

2) Si eso no es lo suficientemente bueno para usted, puede intentar usar la función var_dump() . xDebug modifica la salida de var_dump() para incluir información adicional. Si esto está en su lugar, entonces xDebug está funcionando.

3) xDebug modifica la salida de error de PHP. Si su programa falla con xDebug en su lugar, obtendrá más información acerca de la falla que con la salida estándar de bloqueo de PHP.

4) xDebug también agrega una cantidad de funciones de ayuda a PHP. Puede probar cualquiera de estos para ver si está funcionando. Por ejemplo, la función xdebug_get_code_coverage() debería existir y devolver una matriz. Si lo hace, entonces xDebug está instalado. Si no, no lo es.


correr

php -m -c

en tu terminal, y luego busca [Zend Modules] . ¡Debería estar en algún lugar allí si está cargado!

nótese bien

Si está utilizando Ubuntu, es posible que no aparezca aquí porque necesita agregar la configuración de xdebug desde /etc/php5/apache2/php.ini a /etc/php5/cli/php.ini. Los míos son

[xdebug] zend_extension = /usr/lib/php5/20121212/xdebug.so xdebug.remote_enable=on xdebug.remote_handler=dbgp xdebug.remote_mode=req xdebug.remote_host=localhost xdebug.remote_port=9000


puedes ejecutar este pequeño código php

<?php phpinfo(); ?>

Copie la página de salida completa, péguela en este link . Luego analiza. Mostrará si Xdebug está instalado o no. Y dará instrucciones para completar la instalación.