Comment compiler PHP7 à partir des sources sur Raspbian Jessie
Ce tutoriel explique comment compiler PHP7 à partir des sources et l'installer sur Raspbian Jessie OS. J'utilise le Pi 1 modèle B bas de gamme. La puissance de traitement du Pi 1 est insuffisante lorsqu'il s'agit de compiler un logiciel à partir des sources. Il a fallu environ 5 heures pour terminer la compilation de PHP7. Je suggère donc d'utiliser Pi 2 ou Pi3 si vous en avez un. Pi 2 a un processeur double cœur et Pi 3 a un processeur quadricœur.
Compiler PHP7 à partir des sources
Connectez-vous d’abord en SSH à votre Raspberry Pi si vous disposez d’une configuration sans tête. Téléchargez ensuite le code source PHP7 depuis le site officiel.
wget http://php.net/distributions/php-7.0.4.tar.gzExtrayez l’archive tar.
tar xvf php-7.0.4.tar.gzcd dans le répertoire nouvellement créé.
cd php-7.0.4/Installez les dépendances.
sudo apt-get install libkrb5-devlibc-client2007e libc-client2007e-dev libcurl4-openssl-dev libbz2-dev libjpeg-dev libmcrypt-dev libxslt1-dev libxslt1.1 libpq-dev build-essential git make
Comme vous le savez peut-être déjà, nous devons exécuter un script configure pour configurer l'environnement de compilation. Mais avant cela, j'aimerais souligner deux erreurs que j'ai rencontrées lors de la phase de configuration et comment les résoudre.
Erreur n°1
configure: error: Cannot find imap library (libc-client.a). Please check your c-client installation.Solution : créez un lien symbolique et réexécutez le script de configuration.
sudo mkdir /usr/c-client/
sudo ln -s /usr/lib/libc-client.a /usr/c-client/Erreur n°2
error: Kerberos libraries not found.
Check the path given to --with-kerberos (if no path is given, searches in /usr/kerberos, /usr/local and /usr )Solution : créez un lien symbolique et réexécutez le script de configuration.
sudo mkdir /usr/kerberos
sudo ln -s /usr/lib/arm-linux-gnueabihf/mit-krb5/* /usr/kerberosSi vous souhaitez voir l'erreur par vous-même, vous pouvez maintenant exécuter le script de configuration ci-dessous. Si vous n'aimez pas voir les erreurs, créez les liens symboliques ci-dessus et exécutez le script de configuration ci-dessous.
Voici les arguments courants du script de configuration. Copiez le code suivant et collez-le dans le terminal Raspbian, puis appuyez sur Entrée pour démarrer la configuration.
./configure \
--prefix=/opt/php-7.0.4 \
--with-config-file-path=/opt/php-7.0.4/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=www-data \
--with-fpm-group=www-data \
--with-libdir=/usr/lib/arm-linux-gnueabihf \
--enable-ftp \
--with-imap \
--with-imap-ssl \
--with-kerberos \
--with-gettext \
--with-xmlrpc \
--with-xsl \
--enable-opcache \
--enable-fpmQuand c’est fait, compilons PHP7 avec la commande make. utilisez l'option -j4 si votre Raspberry Pi dispose d'un processeur quadcore.
make or make -j4Sur mon Raspberry Pi monocœur bas de gamme, ce processus de compilation a pris environ 5 heures. Un Pi 3 avec processeur quad-core prend beaucoup moins de temps.
Une fois la compilation terminée, installez PHP7.0.4 avec la commande suivante :
sudo make installUne fois terminé, il vous indique où les choses sont installées. C'est une information très utile.
Comme vous pouvez le voir, le binaire PHP-FPM se trouve dans /opt/php-7.0.4/sbin/ et mon répertoire de configuration PHP-FPM est /opt/php-7.0.4. /etc/. Donc si je démarre php-fpm avec cette commande :
/opt/php-7.0.4/sbin/php-fpmUn message d'erreur s'affiche m'indiquant que php-fpm.conf est introuvable.
Nous devons renommer deux fichiers de configuration.
sudo mv /opt/php-7.0.4/etc/php-fpm.conf.default /opt/php-7.0.4/etc/php-fpm.conf
sudo mv /opt/php-7.0.4/etc/php-fpm.d/www.conf.default /opt/php-7.0.4/etc/php-fpm.d/www.confEt copiez le fichier php.ini-production dans le dossier de configuration php-fpm.
sudo cp /home/pi/php-7.0.4/php.ini-production /opt/php-7.0.4/etc/Maintenant, redémarrez php-fpm.
sudo /opt/php-7.0.4/sbin/php-fpmIntégrer avec Nginx
Pour voir comment compiler Nginx à partir des sources sur Raspbian Jessie, consultez l'article suivant. Bien sûr, vous pouvez également installer nginx sur Raspbian Jessie à partir du référentiel de logiciels avec sudo apt-get install nginx.
Comment compiler Nginx à partir des sources et l'installer sur Raspbian Jessie
Dans votre bloc serveur Nginx, ajoutez ces lignes.
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}Le répertoire racine du document sur mon Raspbian Jessie est /usr/share/nginx/html. Vous devrez peut-être modifier le répertoire racine du document. Enregistrez et fermez le fichier. Rechargez Nginx.
sudo sysemctl reload nginx
Créez ensuite un fichier test.php dans le répertoire racine de votre document.
sudo nano /usr/share/nginx/html/test.phpCollez le code PHP suivant dans le fichier.
<?php
phpinfo();
?>Enregistrez et fermez le fichier. Maintenant, dans la barre d'adresse de votre navigateur, tapez
ip-of-raspberrypi/test.phpRemplacez ip-of-raspberrypi par l'adresse IP réelle. Vous devriez voir toutes vos informations d’installation PHP. Si vous pouvez voir cette page, cela signifie que php-fpm fonctionne correctement avec Nginx.
Réglage fin
Activer le journal des erreurs
Modifier le fichier php-fpm.conf
sudo nano /opt/php-7.0.4/etc/php-fpm.confRecherchez la ligne suivante dans ce fichier.
;error_log = log/php-fpm.loget changez-le comme suit :
error_log = /var/log/php-fpm.logNous pouvons donc maintenant vérifier le journal php-fpm dans le fichier /var/log/php-fpm.log.
Intégrer avec Systemd
Créez un fichier de service systemd pour php-fpm.
sudo nano /etc/systemd/system/php-fpm.serviceCopiez et collez le texte suivant dans le fichier.
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
[Service]
Type=simple
PIDFile=/var/run/php-fpm.pid
ExecStart=/opt/php-7.0.4/sbin/php-fpm --nodaemonize --fpm-config /opt/php-7.0.4/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.targetEnregistrez et fermez le fichier. Maintenant, tuez le processus php-fpm en cours d'exécution et redémarrez-le avec systemctl.
sudo pkill php-fpm
sudo systemctl start php-fpmVérifier l'état
sudo systemctl status php-fpmActivez le démarrage automatique de php-fpm lorsque le Raspberry Pi est allumé.
sudo systemctl enable php-fpmModifier le fichier www.conf
sudo nano /opt/php-7.0.4/etc/php-fpm.d/www.confTrouvez les deux lignes suivantes
;listen.owner = www-data
;listen.group = www-data
;listen.mode = 0660Décommentez-les. Trouvez ensuite cette ligne.
listen = 127.0.0.1:9000Changez-le en
listen = /var/run/php7-fpm.sockEnregistrez le fichier. Modifiez maintenant votre fichier de configuration Nginx et changez la valeur de fastcgi_pass en /var/run/php7-fpm.sock
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass unix:/var/run/php7-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}Enregistrez et fermez le fichier. Redémarrez ensuite Nginx et php-fpm.
sudo systemctl restart nginx
sudo systemclt restart php-fpmBravo! Vous avez compilé avec succès PHP7 et l'avez installé sur Raspbian Jessie. Nous avons également créé un fichier php-fpm.service et pouvons facilement gérer php-fpm avec Systemd.



