Ce tutoriel vous montre comment compiler PHP7.0/PHP7.1 sur Arch Linux et l'installer avec PHP7.2. Arch Linux est une distribution à diffusion continue avec les logiciels les plus récents et les plus performants. PHP7.2 a atterri dans le référentiel Arch Linux. Certaines applications Web telles que WordPress fonctionnent bien avec PHP7.2, mais d'autres comme NextCloud ne prennent actuellement pas en charge PHP7.2. La prochaine version de NextCloud - NextCloud 13 - serait compatible avec PHP7.2.
Hier, j'ai effectué une mise à niveau sur mon serveur Arch Linux, ce qui a entraîné le remplacement de PHP7.2 par PHP7.1 et mon interface Web NextCloud a cessé de fonctionner. L'AUR (Arch User Repository) fournit PHP7.0. J'ai essayé de l'installer avec Yaourt, mais la vérification de la signature a échoué, je n'ai donc pas eu d'autre choix que de compiler PHP7.0/PHP7.1 moi-même.
Comment compiler PHP7.0/PHP7.1 sur Arch Linux
Tout d'abord, mettez à niveau tous les logiciels.
sudo pacman -Syu
Installez wget et téléchargez le code source PHP. J'utilise la dernière version de PHP7.0. Remplacez le numéro de version par votre version préférée.
sudo pacman -S wget wget http://php.net/distributions/php-7.0.26.tar.gz
Extrayez l'archive.
tar xvf php-7.0.26.tar.gz
Cd dans le répertoire nouvellement créé.
cd php-7.0.26
Installez les outils de construction et les dépendances.
sudo pacman -S gcc make bison gawk re2c libxml2 libwebp freetype2 c-client libmcrypt libxslt
Configurez l'environnement avec les paramètres suivants. Copiez l'intégralité de la commande et collez-la dans la fenêtre de votre terminal.
./configure \ --prefix=/opt/php-7.0.26 \ --with-config-file-path=/opt/php-7.0.26/etc \ --with-zlib-dir \ --with-freetype-dir \ --enable-mbstring \ --with-libxml-dir=/usr \ --enable-soap \ --enable-calendar \ --with-curl \ --with-mcrypt \ --with-zlib \ --with-gd \ --disable-rpath \ --enable-inline-optimization \ --with-bz2 \ --with-zlib \ --enable-sockets \ --enable-sysvsem \ --enable-sysvshm \ --enable-pcntl \ --enable-mbregex \ --enable-exif \ --enable-bcmath \ --with-mhash \ --enable-zip \ --with-pcre-regex \ --with-pdo-mysql \ --with-mysqli \ --with-mysql-sock=/var/run/mysqld/mysqld.sock \ --with-jpeg-dir=/usr \ --with-png-dir=/usr \ --enable-gd-native-ttf \ --with-openssl \ --with-fpm-user=http \ --with-fpm-group=http \ --enable-ftp \ --with-imap \ --with-imap-ssl \ --with-kerberos \ --with-gettext \ --with-xmlrpc \ --with-xsl \ --enable-opcache \ --enable-fpm
Quand c'est fait, compilons PHP7 avec la commande make. Remplacez 2 par le nombre de cœurs de processeur sur votre machine. Par défaut make
utilise 1 cœur, vous pouvez accélérer le processus de compilation en utilisant tous les cœurs disponibles.
make -j2
Le processus de compilation peut prendre un certain temps, selon la puissance de votre CPU. Une fois terminé, lancez un test.
make test
Installez maintenant PHP. Le répertoire d'installation est /opt/php-7.0.26/
.
sudo make install
À partir de la capture d'écran, nous pouvons voir que le binaire PHP-FPM est installé sur /opt/php-7.0.26/sbin/
et le répertoire de configuration de PHP-FPM est /opt/php-7.0.26/etc/
. Avant d'exécuter PHP-FPM, nous devons créer le fichier de configuration PHP-FPM. Il existe deux exemples de fichiers de configuration afin que nous puissions simplement les copier.
sudo cp /opt/php-7.0.26/etc/php-fpm.conf.default /opt/php-7.0.26/etc/php-fpm.conf sudo cp /opt/php-7.0.26/etc/php-fpm.d/www.conf.default /opt/php-7.0.26/etc/php-fpm.d/www.conf
Modifiez le www.conf
fichier de configuration.
sudo nano /opt/php-7.0.26/etc/php-fpm.d/www.conf
Par défaut, PHP-FPM écoute sur le socket TCP 127.0.0.1:9000, on peut le faire écouter sur le socket Unix. Trouvez la ligne suivante.
listen = 127.0.0.1:9000
Ajoutez un point-virgule au début pour le commenter. Ajoutez ensuite la ligne suivante en dessous.
listen = /run/php-fpm/php7.0-fpm.sock
Ensuite, trouvez les 3 lignes suivantes et décommentez-les.
;listen.owner = http ;listen.group = http ;listen.mode = 0660
Enregistrez et fermez le fichier. Copiez ensuite le fichier php.ini.
sudo cp ~/php-7.0.26/php.ini-production /opt/php-7.0.26/etc/php.ini
Modifiez le fichier.
sudo nano /opt/php-7.0.26/etc/php.ini
Ajoutez ce qui suit au bas du fichier.
include_path = "/opt/php-7.0.26/lib/php"
Enregistrez et fermez le fichier. Nous pouvons maintenant démarrer PHP-FPM avec :
sudo /opt/php-7.0.26/sbin/php-fpm
Créer une unité de service Systemd
Créer une unité de service Systemd pour PHP7.0.
sudo nano /etc/systemd/system/php7.0-fpm.service
Copiez et collez les lignes suivantes dans le fichier.
[Unit] Description=The PHP FastCGI Process Manager After=network.target [Service] Type=simple PIDFile=/run/php-fpm/php7.0-fpm.pid ExecStart=/opt/php-7.0.26/sbin/php-fpm --nodaemonize --fpm-config /opt/php-7.0.26/etc/php-fpm.conf ExecReload=/bin/kill -USR2 $MAINPID [Install] WantedBy=multi-user.target
Enregistrez et fermez le fichier. Nous pouvons maintenant tuer le PHP7.0-FPM en cours d'exécution et l'exécuter via systemd. Trouvez le PID du processus maître PHP7.0-FPM.
ps aux | grep php-fpm
Comme vous pouvez le voir, le PID est 5066 sur ma machine. Donc je peux le tuer avec :
sudo kill 5066
Notez que le binaire PHP7.2-FPM est également nommé php-fpm
.Si vous utilisez pkill php-fpm
, alors PHP7.2-FPM et PHP7.0-FPM s'arrêteront. Démarrez maintenant php7.0-fpm via systemd.
sudo systemctl start php7.0-fpm
Activer le démarrage automatique au démarrage.
sudo systemctl enable php7.0-fpm
Vérifiez son statut.
systemctl status php-fpm
Faire en sorte que Nginx utilise PHP7.0-FPM
Pour que Nginx utilise PHP7.0 au lieu de PHP7.2, ouvrez le fichier de bloc du serveur Nginx, recherchez la ligne suivante.
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
Changez-le en
fastcgi_pass unix:/run/php-fpm/php7.0-fpm.sock;
Il peut y avoir plus d'une instance de cette ligne. Vous devez tous les changer. Ensuite, faites http
(l'utilisateur du serveur Web sur Arch Linux) en tant que propriétaire de /run/php-fpm/php7.0-fpm.sock
fichier.
sudo chown http:http /run/php-fpm/php7.0-fpm.sock
Testez la configuration de Nginx.
sudo nginx -t
Si le test réussit, rechargez Nginx pour que les modifications prennent effet.
sudo systemctl reload nginx
C'est ça! J'espère que ce tutoriel vous a aidé à compiler PHP7.0/7.1 à partir des sources sur Arch Linux. Comme toujours, si vous avez trouvé cet article utile, abonnez-vous à notre newsletter gratuite pour obtenir d'autres conseils et astuces utiles.