with instal debugger php xdebug php-7

php - instal - xdebug wizard



PHP7 CLI intenta cargar xdebug dos veces: "No se puede cargar Xdebug, ya estaba cargado" (5)

Debian y derivado:

Lo arreglé ubicando mi php.ini, cambiando el zend_extension=xdebug.so al anterior (así que supongo que lo mismo pasaría comentando la línea) zend_extension_ts=zdebug.so .

Luego con: php -i | grep xdebug php -i | grep xdebug solo debe haber un conf.d con zend_extension=xdebug.so . Si hubiera más de una borrar el resto de entradas.

Después de actualizar Ubuntu de 14.04 a 16.04, la CLI de PHP comenzó a quejarse de xdebug:

$ php -v Cannot load Xdebug - it was already loaded PHP 7.0.13-0ubuntu0.16.04.1 (cli) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.13-0ubuntu0.16.04.1, Copyright (c) 1999-2016, by Zend Technologies with Xdebug v2.4.0, Copyright (c) 2002-2016, by Derick Rethans

Solo hay un archivo .ini:

$ ls -la /etc/php/7.0/cli/conf.d/ | grep xdebug lrwxrwxrwx 1 root root 38 Jan 19 11:41 20-xdebug.ini -> /etc/php/7.0/mods-available/xdebug.ini

Y solo se hace referencia una vez en esta salida de php -i :

$ php -i | grep -i configuration Cannot load Xdebug - it was already loaded Configuration File (php.ini) Path => /etc/php/7.0/cli Loaded Configuration File => /etc/php/7.0/cli/php.ini Configuration

Y solo hay una referencia a xdebug en todo el directorio (por lo que no se incluye dos veces):

/etc/php/7.0$ grep -r xdebug * mods-available/xdebug.ini:zend_extension=xdebug.so mods-available/xdebug.ini:[xdebug] mods-available/xdebug.ini:xdebug.remote_enable=1 mods-available/xdebug.ini:xdebug.remote_autostart=1 mods-available/xdebug.ini:xdebug.remote_port=9000 mods-available/xdebug.ini:xdebug.idekey=PHPSTORM

Si hago $ phpdismod xdebug obtengo el siguiente resultado, sugiriendo que todavía tiene xdebug cargado:

$ php -v PHP 7.0.13-0ubuntu0.16.04.1 (cli) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.13-0ubuntu0.16.04.1, Copyright (c) 1999-2016, by Zend Technologies with Xdebug v2.4.0, Copyright (c) 2002-2016, by Derick Rethans

Una vez hecho esto, ya no está presente en la configuración de apache como lo muestra phpinfo() .

¿Cómo puedo solucionar esto?

Edición: Salida adicional a lo solicitado:

$ php --ini Cannot load Xdebug - it was already loaded Configuration File (php.ini) Path: /etc/php/7.0/cli Loaded Configuration File: /etc/php/7.0/cli/php.ini Scan for additional .ini files in: /etc/php/7.0/cli/conf.d Additional .ini files parsed: /etc/php/7.0/cli/conf.d/10-mysqlnd.ini, /etc/php/7.0/cli/conf.d/10-opcache.ini, /etc/php/7.0/cli/conf.d/10-pdo.ini, /etc/php/7.0/cli/conf.d/15-xml.ini, /etc/php/7.0/cli/conf.d/20-bcmath.ini, /etc/php/7.0/cli/conf.d/20-calendar.ini, /etc/php/7.0/cli/conf.d/20-ctype.ini, /etc/php/7.0/cli/conf.d/20-curl.ini, /etc/php/7.0/cli/conf.d/20-dom.ini, /etc/php/7.0/cli/conf.d/20-exif.ini, /etc/php/7.0/cli/conf.d/20-fileinfo.ini, /etc/php/7.0/cli/conf.d/20-ftp.ini, /etc/php/7.0/cli/conf.d/20-gd.ini, /etc/php/7.0/cli/conf.d/20-gettext.ini, /etc/php/7.0/cli/conf.d/20-iconv.ini, /etc/php/7.0/cli/conf.d/20-json.ini, /etc/php/7.0/cli/conf.d/20-mbstring.ini, /etc/php/7.0/cli/conf.d/20-mcrypt.ini, /etc/php/7.0/cli/conf.d/20-mysqli.ini, /etc/php/7.0/cli/conf.d/20-pdo_mysql.ini, /etc/php/7.0/cli/conf.d/20-pdo_sqlite.ini, /etc/php/7.0/cli/conf.d/20-phar.ini, /etc/php/7.0/cli/conf.d/20-posix.ini, /etc/php/7.0/cli/conf.d/20-readline.ini, /etc/php/7.0/cli/conf.d/20-shmop.ini, /etc/php/7.0/cli/conf.d/20-simplexml.ini, /etc/php/7.0/cli/conf.d/20-sockets.ini, /etc/php/7.0/cli/conf.d/20-sqlite3.ini, /etc/php/7.0/cli/conf.d/20-sysvmsg.ini, /etc/php/7.0/cli/conf.d/20-sysvsem.ini, /etc/php/7.0/cli/conf.d/20-sysvshm.ini, /etc/php/7.0/cli/conf.d/20-tokenizer.ini, /etc/php/7.0/cli/conf.d/20-wddx.ini, /etc/php/7.0/cli/conf.d/20-xdebug.ini, /etc/php/7.0/cli/conf.d/20-xmlreader.ini, /etc/php/7.0/cli/conf.d/20-xmlwriter.ini, /etc/php/7.0/cli/conf.d/20-xsl.ini

$ cat /etc/php/7.0/mods-available/xdebug.ini zend_extension=xdebug.so [xdebug] xdebug.remote_enable=1 xdebug.remote_autostart=1 xdebug.remote_port=9000 xdebug.idekey=PHPSTORM

Como esto sigue siendo un problema, he encontrado algunos detalles más:

Caminos:

$ ls -la /usr/bin/php lrwxrwxrwx 1 root root 21 Apr 18 2017 /usr/bin/php -> /etc/alternatives/php $ ls -la /etc/alternatives/php lrwxrwxrwx 1 root root 15 Feb 12 15:43 /etc/alternatives/php -> /usr/bin/php7.1

php

$ php -v Cannot load Xdebug - it was already loaded PHP 7.1.15-1+ubuntu16.04.1+deb.sury.org+2 (cli) (built: Mar 6 2018 11:10:13) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.1.15-1+ubuntu16.04.1+deb.sury.org+2, Copyright (c) 1999-2018, by Zend Technologies with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans

php7.1:

$ php7.1 -v PHP 7.1.15-1+ubuntu16.04.1+deb.sury.org+2 (cli) (built: Mar 6 2018 11:10:13) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.1.15-1+ubuntu16.04.1+deb.sury.org+2, Copyright (c) 1999-2018, by Zend Technologies with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans

Lo interesante es que el binario de php es idéntico a php7.1, pero cuando se le llama como específico no muestra el mensaje ya cargado.

Editar, 20181006:

Todavía tengo este problema. La siguiente imagen es una diferencia de la salida de las dos llamadas php --ini . Como puede ver, los conjuntos de archivos ini cargados son los mismos.

También son los mismos binarios con enlaces simbólicos:

ben@ben-work:~$ which php /usr/bin/php ben@ben-work:~$ ls -la /usr/bin/php lrwxrwxrwx 1 root root 21 May 15 16:07 /usr/bin/php -> /etc/alternatives/php ben@ben-work:~$ ls -la /etc/alternatives/php lrwxrwxrwx 1 root root 15 May 30 10:13 /etc/alternatives/php -> /usr/bin/php7.1 ben@ben-work:~$ which php7.1 /usr/bin/php7.1


En Arch Linux el paquete xdebug genera la siguiente configuración:

/etc/php/conf.d/xdebug.ini ---------- zend_extension=xdebug.so xdebug.remote_enable=on xdebug.remote_host=127.0.0.1 xdebug.remote_port=9000 xdebug.remote_handler=dbgp #xdebug.max_nesting_level=300

Esto carga dos veces el mismo zend_extension=xdebug.so ubicado en zend_extension=xdebug.so


Para usuarios que se enfrentan al mismo problema.

En mi caso, fue un problema con php cli por lo que cada vez que intentaba acceder a php en la consola, recibía un aviso: Cannot load the ionCube PHP Loader - extension already loaded

Supongo que será similar a otras extensiones.

Lo que finalmente he hecho es:

cd /opt/cpanel/ea-php56/root/etc grep -r "cube" . # now I saw two files loading the .so files: # ./php.d/01-ioncube.ini:zend_extension="/opt/cpanel/ea-php56/root/usr/lib64/php/modules/ioncube_loader_lin_5.6.so" # ./php.d/pecl.ini:zend_extension="/opt/cpanel/ea-php56/root/usr/lib64/php/modules/ioncube_loader_lin_5.6.so" mv php.d/pecl.ini .

Eso fue todo.


Tuve el mismo problema y lo resolví eliminando la línea adicional de código zend_extension="xdebug.so" dentro del archivo php.ini en la carpeta php que muestra php --version, generalmente dentro de /usr/local/etc/php/ for mac usuarios


zend_extension=xdebug.so esto eliminando zend_extension=xdebug.so ya que ya lo habilité en mi contenedor docker-php-ext-enable xdebug con docker-php-ext-enable xdebug . Puede ser que también esté habilitado para ti.