Después de una amarga carrera de casi 24 horas tratando de hacer que xdebug funcione con Netbeans 8.0.2, he encontrado una solución que, espero, funcionará para todas las pilas relacionadas con Ubuntu y Ubuntu.
Problema número 1: las versiones de PHP y xdebug deben ser compatibles
A veces, si está ejecutando una configuración de Linux y apt-get para instalar xdebug, no obtendrá la versión adecuada de xdebug. En mi caso, tenía la última versión de php pero una versión antigua 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 sistema operativo que esté ejecutando.
Solución: PHP tiene un administrador de extensiones ordenado llamado PECL. Siga las instrucciones que se dan aquí para tenerlo en funcionamiento. Primero, como lo 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 haga, se instalará la versión correcta de xdebug, pero no estará lista para usar. Después de eso, deberá habilitarlo. He visto muchas sugerencias sobre cómo hacerlo, pero el hecho es que PHP necesita que algunos módulos estén habilitados tanto para el cliente como para el servidor, en este caso Apache. Parece que la mejor práctica aquí es utilizar el método integrado para habilitar módulos, llamado php5enmod. El uso se describe aquí .
Problema número 2: habilite el módulo correctamente
Primero, deberá 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 nombres es [módulo] .ini. Eche un vistazo dentro de algunos de ellos, vea cómo están configurados.
Ahora tendrás que crear tu archivo ini dentro de la carpeta mods_available. Cree un archivo llamado xdebug.ini y, dentro del archivo, pegue 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, simplemente copie y pegue todo el código, así será una persona más feliz. :RE
Nota: la ruta zend_extension es muy importante. En este ejemplo, está apuntando a la versión actual del motor PHP, pero primero debe ir a / usr / lib / php5 y asegurarse de que la carpeta nombrada con números sea la correcta. Ajuste el nombre a lo que vea allí, y mientras lo hace, verifique dentro de la carpeta para asegurarse de que xdebug.so esté realmente allí. Debería serlo, si hiciste todo bien.
Ahora, con su xdebug.ini creado, es el momento de habilitar el módulo. Para hacer eso, 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
Reinicie su servidor Apache y escriba esto en la consola:
php -v
Debería 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 ahora tan bueno.
Ahora cree un script phpinfo en algún lugar de su servidor web y ejecútelo. Esto es lo que debería ver, si todo salió bien:
Si ve esto, Apache también cargó el módulo y probablemente esté 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 interrupción en ellas. Ahora presione CTRL + F5, haga clic en "entrar" en su panel de depuración y vea si obtiene algo como esto:
Recuerde verificar la configuración de Netbeans para la depuración, en herramientas / opciones / php. Debería verse algo como esto:
Espero que esto arroje algo de luz sobre este problema confuso y bastante oscuro.
¡Los mejores deseos!
phpinfo()
informa como una extensión cargada? ¿Es eso lo que quiere decir con "trabajar"?