Dieses Tutorial zeigt Ihnen, wie Sie PHP7.0/PHP7.1 unter Arch Linux kompilieren und neben PHP7.2 installieren. Arch Linux ist eine Rolling-Release-Distribution mit der neuesten und besten Software. PHP7.2 ist im Arch Linux-Repository gelandet. Einige Webanwendungen wie WordPress funktionieren gut mit PHP7.2, aber andere wie NextCloud unterstützen derzeit PHP7.2 nicht. Die kommende NextCloud-Version – NextCloud 13 – soll mit PHP7.2 kompatibel sein.
Gestern habe ich ein Upgrade auf meinem Arch-Linux-Server durchgeführt, was dazu führte, dass PHP7.2 PHP7.1 ersetzte und meine NextCloud-Weboberfläche nicht mehr funktionierte. Das AUR (Arch User Repository) stellt PHP7.0 bereit. Ich habe versucht, es mit Yaourt zu installieren, aber die Signaturüberprüfung ist fehlgeschlagen, sodass mir keine andere Wahl blieb, als PHP7.0/PHP7.1 selbst zu kompilieren.
Wie man PHP7.0/PHP7.1 auf Arch Linux kompiliert
Aktualisieren Sie zuerst die gesamte Software.
sudo pacman -Syu
Installieren Sie wget und laden Sie den PHP-Quellcode herunter. Ich verwende die neueste Version von PHP7.0. Ersetzen Sie die Versionsnummer durch Ihre bevorzugte Version.
sudo pacman -S wget wget http://php.net/distributions/php-7.0.26.tar.gz
Extrahieren Sie den Tarball.
tar xvf php-7.0.26.tar.gz
Cd in das neu erstellte Verzeichnis.
cd php-7.0.26
Build-Tools und Abhängigkeiten installieren.
sudo pacman -S gcc make bison gawk re2c libxml2 libwebp freetype2 c-client libmcrypt libxslt
Konfigurieren Sie die Umgebung mit den folgenden Parametern. Kopieren Sie den gesamten Befehl und fügen Sie ihn in Ihr Terminalfenster ein.
./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
Wenn es fertig ist, kompilieren wir PHP7 mit dem Befehl make. Ersetzen Sie 2 durch die Anzahl der CPU-Kerne auf Ihrem Computer. Standardmäßig make
1 Kern verwendet, können Sie den Kompilierungsprozess beschleunigen, indem Sie alle verfügbaren Kerne verwenden.
make -j2
Der Kompiliervorgang kann je nach CPU-Leistung einige Zeit in Anspruch nehmen. Führen Sie nach Abschluss einen Test durch.
make test
Installieren Sie nun PHP. Das Installationsverzeichnis ist /opt/php-7.0.26/
.
sudo make install
Aus dem Screenshot können wir sehen, dass die PHP-FPM-Binärdatei unter /opt/php-7.0.26/sbin/
installiert ist und das PHP-FPM-Konfigurationsverzeichnis ist /opt/php-7.0.26/etc/
. Bevor wir PHP-FPM ausführen, müssen wir die PHP-FPM-Konfigurationsdatei erstellen. Es gibt zwei Beispielkonfigurationsdateien, also können wir sie einfach kopieren.
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
Bearbeiten Sie die www.conf
Konfigurationsdatei.
sudo nano /opt/php-7.0.26/etc/php-fpm.d/www.conf
Standardmäßig lauscht PHP-FPM auf TCP-Socket 127.0.0.1:9000, wir können es dazu bringen, auf Unix-Socket zu lauschen. Suchen Sie die folgende Zeile.
listen = 127.0.0.1:9000
Fügen Sie am Anfang ein Semikolon hinzu, um es auszukommentieren. Fügen Sie dann darunter die folgende Zeile hinzu.
listen = /run/php-fpm/php7.0-fpm.sock
Suchen Sie als Nächstes die folgenden 3 Zeilen und kommentieren Sie sie aus.
;listen.owner = http ;listen.group = http ;listen.mode = 0660
Speichern und schließen Sie die Datei. Als nächstes kopieren Sie die Datei php.ini.
sudo cp ~/php-7.0.26/php.ini-production /opt/php-7.0.26/etc/php.ini
Bearbeiten Sie die Datei.
sudo nano /opt/php-7.0.26/etc/php.ini
Fügen Sie am Ende der Datei Folgendes hinzu.
include_path = "/opt/php-7.0.26/lib/php"
Speichern und schließen Sie die Datei. Jetzt können wir PHP-FPM starten mit:
sudo /opt/php-7.0.26/sbin/php-fpm
Systemd Service Unit erstellen
Systemd-Diensteinheit für PHP7.0 erstellen.
sudo nano /etc/systemd/system/php7.0-fpm.service
Kopieren Sie die folgenden Zeilen und fügen Sie sie in die Datei ein.
[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
Speichern und schließen Sie die Datei. Jetzt können wir das aktuell laufende PHP7.0-FPM beenden und es über systemd ausführen. Finden Sie die PID des PHP7.0-FPM-Master-Prozesses.
ps aux | grep php-fpm
Wie Sie sehen können, ist die PID auf meinem Rechner 5066. Also kann ich es töten mit:
sudo kill 5066
Beachten Sie, dass die PHP7.2-FPM-Binärdatei auch php-fpm
heißt .Wenn Sie pkill php-fpm
verwenden , dann werden sowohl PHP7.2-FPM als auch PHP7.0-FPM gestoppt. Starten Sie nun php7.0-fpm über systemd.
sudo systemctl start php7.0-fpm
Autostart beim Booten aktivieren.
sudo systemctl enable php7.0-fpm
Überprüfen Sie den Status.
systemctl status php-fpm
Nginx PHP7.0-FPM verwenden
Damit Nginx PHP7.0 anstelle von PHP7.2 verwendet, öffnen Sie die Nginx-Serverblockdatei und suchen Sie die folgende Zeile.
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
Ändern Sie es in
fastcgi_pass unix:/run/php-fpm/php7.0-fpm.sock;
Es kann mehr als eine Instanz dieser Zeile geben. Sie müssen alle ändern. Dann machen Sie http
(der Webserver-Benutzer auf Arch Linux) als Eigentümer von /run/php-fpm/php7.0-fpm.sock
Datei.
sudo chown http:http /run/php-fpm/php7.0-fpm.sock
Nginx-Konfiguration testen.
sudo nginx -t
Wenn der Test erfolgreich ist, laden Sie Nginx neu, damit die Änderungen wirksam werden.
sudo systemctl reload nginx
Das ist es! Ich hoffe, dieses Tutorial hat Ihnen geholfen, PHP7.0/7.1 aus dem Quellcode unter Arch Linux zu kompilieren. Wenn Sie diesen Beitrag nützlich fanden, abonnieren Sie wie immer unseren kostenlosen Newsletter, um weitere nützliche Tipps und Tricks zu erhalten.