Installer un serveur web personnel - Partie 2b - Configurer une socket entre MariaDB et PHP
Il y a peu de temps, nous avons vu comment installer MariaDB sur macOS, via Homebrew. Nous avions fais la configuration minimale de la base de données, juste suffisante pour s'y connecter depuis PHP.
Aujourd'hui, je vais aller un peu plus loin, et vous montrer comment configurer MariaDB un peu plus finement, pour connecter la base de données à PHP via une socket.
1/ Regarder la configuration de MariaDB
MariaDB est lancé automatiquement par Homebrew, mais il est tout de même possible de voir comment. La commande suivante va regarder les processus dont le nom contient "mysql"
ps -aef | grep mysql
Voici le résultat chez moi
501 40687 1 0 9:40 ?? 0:00.04 /bin/sh /usr/local/opt/mariadb/bin/mysqld_safe --datadir=/usr/local/var/mysql
501 40751 40687 0 9:40 ?? 0:00.33 /usr/local/opt/mariadb/bin/mysqld --basedir=/usr/local/opt/mariadb --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/opt/mariadb/lib/plugin --log-error=/usr/local/var/mysql/MacPro.local.err --pid-file=MacPro.local.pid
501 41036 804 0 9:45 ttys000 0:00.00 grep mysql
On voit les 2 premières lignes, avec le script qui lance mysql_safe, qui lance mysqld avec les bons paramètres.
La 3ème ligne n'est rien d'autre que la recherche des processus.
Maintenant, regardons où est sitée la socket de MariaDB. Pour cela il faut se connecter à la base de données et taper la commande
show variables where Variable_name = "socket";
sans configuration, la socket est placée dans
/tmp/mysql.sock
Ce qui fonctionne, mais personnellement, je ne trouve pas cela terrible.
2/ Amélioration de la configuration de MariaDB
Voyons comment améliorer cela. Ce se fait via le ficher de configuration my.cnf, comme on peut le trouver sur MySQL.
Le fichier de configuration se trouve à l'emplacement suivant
/usr/local/etc/my.cnf
Le contenu, par défaut, n'est pas bien complexe. Puisqu'il n'y a rien dedans.
!includedir /usr/local/etc/my.cnf.d
On y trouve unique la lecture du dossier my.cnf.d, qui je vous le donne dans le mille, est vide aussi.
ls -l /usr/local/etc/my.cnf.d
Pour faire simple, j'ai repris la configuration de MySQL de skymac.org pour récupérer les informations dont j'ai besoin.
Au dessus, de la lecture du dossier my.cnf.d, j'ai ajouté 2 blocs.
Le premier concerne les réglages du serveur mysqld
[mysqld]
pid-file = /usr/local/var/mysql/MacPro.local.pid
socket = /usr/local/var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr/local
datadir = /usr/local/var/mysql
tmpdir = /tmp
Dans l'ordre, j'ai indiqué :
- le pid-file, dont j'ai simplement repris le chemin actuel et complet.
- la socket, que j'ai placé dans un dossier run, comme pour une configuration classique
- le port, qui est le port par défaut de mysql
- le basedir, aussi, avec une valeur par défaut
- le datadir, avec le chemin vers les données actuelles, histoire qu'il les retrouve
- le tmpdir, le dossier temporaire de macOS
le second concerne l'application cliente
[client-server]
socket = /usr/local/var/run/mysqld/mysqld.sock
Il faut de nouveau indiquer la socket pour qu'elle puisse continuer à se connecter à la base de données. Globalement, vous pouvez mettre la socket ou vous le souhaitez, cependant, il est préférable de la ranger correctement.
Pour que les informations soient prises en compte, il faut redémarrer le contrôleur de la base de données selon comment vous l'aviez lancé dans le premier article. Soit
mysql.server stop; mysql.server start
soit
brew services restart mariadb
Pour tester, vous pouvez lancer le client, avec le paramètre -S
mysql -S /usr/local/var/run/mysqld/mysqld.sock
3/ Modification de la configuration de PHP
La seconde étape est d'adapter la configuration de PHP pour qu'il aille chercher la socket au bon endroit.
La configuration de PHP se trouve à l'emplacement
/etc/php.ini
Vous pouvez le confirmer via la commande
php --ini
Le résultat devrait être :
Configuration File (php.ini) Path: /etc
Loaded Configuration File: /etc/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
Si la valeur de Loaded Configuration File est (none), vous n'avez aucun fichier de configuration pour PHP. Mais ne stressez pas, sur macOS, c'est souvent le réglage par défaut. Pour l'installer, il suffit de copier le fichier "default" qui se trouve à côté.
sudo cp /etc/php.ini.default /etc/php.ini
Puis de lui mettres les bons droits dessus
sudo chmod 664 /etc/php.ini
Et ensuite de l'éditer. Moi, je fais cela avec emacs, mais vous pouvez utiliser l'éditeur que vous souhaitez. Il faut cependant l'ouvrir en mode administrateur.
sudo emacs /etc/php.ini
Recherchez la ligne commençant par
mysqli.default_socket
et indiquez le chemin vers la socket
mysqli.default_socket = /usr/local/var/run/mysqld/mysqld.sock
Enregistrez et quittez.
Puis redémarrer Apache, pour recharger la configuration de PHP.
sudo apachectl restart
Maintenant, vous pouvez indiquer "localhost" comme hôte à la place de l'adresse IP loopback 127.0.0.1.
$host = 'localhost';
$login = 'sky';
$pwd = '78qsd7q8d7qsd7';
$connection = new MySQLi($host, $login, $pwd, '');
echo $connection->connect_errno;
- Installer un serveur web personnel - Partie 1 - Installation standard de macOS
- Installer un serveur web personnel - Partie 2 - Installation de MariaDB via Homebrew
- Installer un serveur web personnel - Partie 2b - Configurer une socket entre MariaDB et PHP
- Installer un serveur web personnel - Partie 3 - Installation d'Apache et de PHP via Homebrew
- Installer un serveur web personnel - Partie 2c - Corriger l'ERROR 23 (HY000) sur MariaDB
- Installer un serveur web personnel - Partie 3b - Configuration des vhosts sur Apache httpd via Homebrew