Avviando una pagina php che faccia accesso ad un database MySQL può capitare di ricevere questo messaggio di errore
Call to undefined function mysqli_init()
Il problema potrebbe essere dovuto al mancato caricamento del modulo MySQL in PHP.
Per installare il modulo mysqli sarà sufficiente utilizzare il comando
sudo apt-get install php-mysqli
o se dovesse essere necessario installare un modulo per un versione specifica di PHP occorre indicarla nel comando seguendo questo formato phpX.Y-mysqli. Ad esempio per la versione 7.2 il comando esatto è
sudo apt-get install php7.2-mysqli
Oltre a installare la libreria nel sistema occorre anche abilitare il modulo nella configurazione PHP.
La lista dei moduli PHP caricati è indicata nel file php.ini.
Verifichiamo quale file php.ini viene utilizzato attraverso il comando
php --ini
che indicherà tutti i file ini utilizzati da PHP.
Configuration File (php.ini) Path: /etc/php/7.2/cli
Loaded Configuration File: /etc/php/7.2/cli/php.ini
Scan for additional .ini files in: /etc/php/7.2/cli/conf.d
Additional .ini files parsed: /etc/php/7.2/cli/conf.d/10-opcache.ini,
/etc/php/7.2/cli/conf.d/10-pdo.ini,
/etc/php/7.2/cli/conf.d/20-calendar.ini,
/etc/php/7.2/cli/conf.d/20-ctype.ini,
/etc/php/7.2/cli/conf.d/20-exif.ini,
/etc/php/7.2/cli/conf.d/20-fileinfo.ini,
/etc/php/7.2/cli/conf.d/20-ftp.ini,
/etc/php/7.2/cli/conf.d/20-gettext.ini,
/etc/php/7.2/cli/conf.d/20-iconv.ini,
/etc/php/7.2/cli/conf.d/20-json.ini,
/etc/php/7.2/cli/conf.d/20-phar.ini,
/etc/php/7.2/cli/conf.d/20-posix.ini,
/etc/php/7.2/cli/conf.d/20-readline.ini,
/etc/php/7.2/cli/conf.d/20-shmop.ini,
/etc/php/7.2/cli/conf.d/20-sockets.ini,
/etc/php/7.2/cli/conf.d/20-sysvmsg.ini,
/etc/php/7.2/cli/conf.d/20-sysvsem.ini,
/etc/php/7.2/cli/conf.d/20-sysvshm.ini,
/etc/php/7.2/cli/conf.d/20-tokenizer.ini
Apriamo il file /etc/php/7.2/cli/php.ini utilizzando
nano /etc/php/7.2/cli/php.ini
Nel file cerchiamo il testo mysqli preceduto da ;extension.
La riga della configurazione è così riportata
;extension=mysqli
Il “;” indica che la riga è un commento. Sarà quindi sufficiente cancellare il “;” e salvare il file.
extension=mysqli
A questo punto sarà sufficiente riavviare Apache per ricaricare la configurazione PHP aggiornata
apachectl restart
e tutto dovrebbe essere risolto.