Ubuntu è basato su Debian. Debian e le sue derivate usano un modo in qualche modo unico di gestire le estensioni per php e apache.
Dei file che hai elencato:
-
/etc/php/7.0/apache2/conf.d/20-xdebug.ini è un collegamento simbolico a /etc/php/7.0/mods-available/xdebug.ini
-
/etc/php/7.0/cli/conf.d/20-xdebug.ini è anche un collegamento simbolico a /etc/php/7.0/mods-available/xdebug.ini
- Puoi modificare /etc/php/7.0/mods-available/xdebug.ini direttamente e le modifiche apportate avranno effetto ovunque sia abilitato.
Comandi phpenmod
e phpdismod
sono disponibili per abilitare o disabilitare i moduli PHP. Questi sono come a2enmod
per apache, di cui puoi leggere qui. Ad esempio, disattiva XDebug con sudo phpdismod xdebug
. Riaccendilo con sudo phpenmod xdebug
. La tua configurazione verrà conservata quando la accendi e spegni perché le tue modifiche sono sempre conservate in mods-available
, sebbene PHP non cerchi la configurazione in quella directory. Infatti, quando "disattivi" il modulo con phpdismod
, sta semplicemente rimuovendo il collegamento simbolico dalla cartella appropriata in modo che il modulo non sia abilitato nella configurazione di php.
Infine, /etc/php/7.0/apache2/php.ini
è la posizione per la configurazione a livello di sistema che non è un modulo che può essere abilitato o disabilitato.
Pertanto, la tua configurazione cambia come xdebug.remote_port = 9000
dovrebbe andare in /etc/php/7.0/mods-available/xdebug.ini
poiché è correlato a XDebug. Metterlo in entrambi i posti è una cattiva idea (a causa della confusione che crea), ma l'ultimo da caricare ha la precedenza. Questo è il motivo per cui molti dei file nella directory mods-available hanno numeri nel nome del file, quindi verranno caricati nell'ordine corretto.
Usa il phpinfo()
funzione per ottenere maggiori informazioni su quali valori di configurazione sono stati caricati e da quali file ini sono stati caricati. Ad esempio:
$ php -r "phpinfo();"
o
$ php -r "phpinfo();" | grep xdebug
Questo dipende da come PHP è stato compilato. Dai un'occhiata a come è stato compilato PHP rivedendo l'elenco di .ini
file che sta caricando e da dove vengono caricati.
Dalla riga di comando, digita quanto segue e rivedi:
$ php -i | grep .ini
Oppure puoi scoprirlo creando un file PHP temporaneo e visitandolo in un browser. Assicurati solo di nominarlo con qualcosa di difficile da trovare ed eliminalo subito dopo aver finito; ad esempio, /info-949w30.php
. Come mai? Perché questo rapporto potrebbe divulgare percorsi completi del file system, numeri di versione e altri dettagli.
<?php phpinfo();
PHP ha due direttive che vengono stabilite quando viene compilato.
--with-config-file-path=path/to/main.ini
--with-config-file-scan-dir=/scan/this/dir/for/other.ini
file.
Il principale .ini
file viene caricato per primo, quindi i file nella directory di scansione vengono caricati in ordine alfabetico. Ecco perché vedi molti .ini
file utilizzando un prefisso numerico. Questo è un modo semplice per assumere il controllo dell'ordine di caricamento. Cambiare il nome del file in relazione ad altri nella directory.