Ubuntu está basado en Debian. Debian y sus derivados usan una forma un tanto única de administrar extensiones para php y apache.
De los archivos que has enumerado:
-
/etc/php/7.0/apache2/conf.d/20-xdebug.ini es un enlace simbólico a /etc/php/7.0/mods-disponible/xdebug.ini
-
/etc/php/7.0/cli/conf.d/20-xdebug.ini también es un enlace simbólico a /etc/php/7.0/mods-disponible/xdebug.ini
- Puede editar /etc/php/7.0/mods-disponible/xdebug.ini directamente y los cambios que realice afectarán en todos los lugares donde esté habilitado.
Comandos phpenmod
y phpdismod
están disponibles para habilitar o deshabilitar módulos PHP. Estos son como a2enmod
para apache, sobre el que puede leer aquí. Por ejemplo, apague XDebug con sudo phpdismod xdebug
. Vuelva a encenderlo con sudo phpenmod xdebug
. Su configuración se conservará cuando la encienda y apague porque sus cambios siempre se conservan en mods-available
, aunque PHP no busca en ese directorio para la configuración. De hecho, cuando "deshabilitas" el módulo con phpdismod
, simplemente elimina el enlace simbólico de la carpeta correspondiente para que el módulo no esté habilitado en la configuración de php.
Finalmente, /etc/php/7.0/apache2/php.ini
es la ubicación para la configuración de todo el sistema que no es un módulo que se puede habilitar o deshabilitar.
Por lo tanto, su configuración cambia como xdebug.remote_port = 9000
debe ir en /etc/php/7.0/mods-available/xdebug.ini
ya que está relacionado con XDebug. Ponerlo en ambos lugares es una mala idea (por la confusión que crea), pero el último en cargar tiene prioridad. Esta es la razón por la que muchos de los archivos en el directorio de mods disponibles tienen números en el nombre del archivo, por lo que se cargarán en el orden correcto.
Utilice el phpinfo()
función para obtener más información sobre qué valores de configuración se cargaron y de qué archivos ini se cargaron. Por ejemplo:
$ php -r "phpinfo();"
o
$ php -r "phpinfo();" | grep xdebug
Esto depende de cómo se compiló PHP. Eche un vistazo a cómo se compiló PHP revisando la lista de .ini
archivos que está cargando y desde dónde se están cargando.
Desde la línea de comando, escriba lo siguiente y revise:
$ php -i | grep .ini
O puede enterarse de esto creando un archivo PHP temporal y visitándolo en un navegador. Solo asegúrese de nombrarlo algo difícil de encontrar y elimínelo inmediatamente después de que haya terminado; por ejemplo, /info-949w30.php
. ¿Por qué? Porque este informe puede filtrar rutas completas del sistema de archivos, números de versión y otros detalles.
<?php phpinfo();
PHP tiene dos directivas que se establecen cuando se compila.
--with-config-file-path=path/to/main.ini
--with-config-file-scan-dir=/scan/this/dir/for/other.ini
archivos.
El principal .ini
El archivo se carga primero, y luego los archivos en el directorio de escaneo se cargan alfabéticamente después de eso. Por eso ves mucho .ini
archivos usando un prefijo numérico. Esa es una manera fácil de controlar el orden de carga. Cambiar el nombre del archivo en relación con otros en el directorio.