Questo tutorial mostra come compilare PHP7.0/PHP7.1 su Arch Linux e installarlo insieme a PHP7.2. Arch Linux è una distribuzione a rilascio progressivo con il software più recente e migliore. PHP7.2 è arrivato nel repository Arch Linux. Alcune applicazioni web come WordPress funzionano bene con PHP7.2, ma altre come NextCloud attualmente non supportano PHP7.2. Si dice che la prossima versione di NextCloud, NextCloud 13, sia compatibile con PHP7.2.
Ieri ho eseguito un aggiornamento sul mio server Arch Linux, che ha portato PHP7.2 a sostituire PHP7.1 e la mia interfaccia web NextCloud ha smesso di funzionare. L'AUR (Arch User Repository) fornisce PHP7.0. Ho provato a installarlo con Yaourt, ma la verifica della firma non è riuscita, quindi non ho avuto altra scelta che compilare PHP7.0/PHP7.1 da solo.
Come compilare PHP7.0/PHP7.1 su Arch Linux
Innanzitutto, aggiorna tutto il software.
sudo pacman -Syu
Installa wget e scarica il codice sorgente PHP. Uso l'ultima versione di PHP7.0. Sostituisci il numero di versione con la tua versione preferita.
sudo pacman -S wget wget http://php.net/distributions/php-7.0.26.tar.gz
Estrai il tarball.
tar xvf php-7.0.26.tar.gz
Cd nella directory appena creata.
cd php-7.0.26
Installa gli strumenti di compilazione e le dipendenze.
sudo pacman -S gcc make bison gawk re2c libxml2 libwebp freetype2 c-client libmcrypt libxslt
Configurare l'ambiente con i seguenti parametri. Copia l'intero comando e incollalo nella finestra del tuo terminale.
./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
Al termine, compiliamo PHP7 con il comando make. Sostituisci 2 con il numero di core della CPU sulla tua macchina. Per impostazione predefinita make
utilizza 1 core, puoi velocizzare il processo di compilazione utilizzando tutti i core disponibili.
make -j2
Il processo di compilazione può richiedere del tempo, a seconda della potenza della CPU. Al termine, esegui un test.
make test
Ora installa PHP. La directory di installazione è /opt/php-7.0.26/
.
sudo make install
Dallo screenshot, possiamo vedere che il binario PHP-FPM è installato in /opt/php-7.0.26/sbin/
e la directory di configurazione PHP-FPM è /opt/php-7.0.26/etc/
. Prima di eseguire PHP-FPM, è necessario creare il file di configurazione PHP-FPM. Sono disponibili due file di configurazione di esempio, quindi possiamo semplicemente copiarli.
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
Modifica il www.conf
file di configurazione.
sudo nano /opt/php-7.0.26/etc/php-fpm.d/www.conf
Per impostazione predefinita, PHP-FPM è in ascolto sul socket TCP 127.0.0.1:9000, possiamo farlo ascoltare sul socket Unix. Trova la riga seguente.
listen = 127.0.0.1:9000
Aggiungi un punto e virgola all'inizio per commentarlo. Quindi aggiungi la seguente riga sotto di essa.
listen = /run/php-fpm/php7.0-fpm.sock
Quindi, trova le seguenti 3 righe e decommentale.
;listen.owner = http ;listen.group = http ;listen.mode = 0660
Salva e chiudi il file. Quindi copia il file php.ini.
sudo cp ~/php-7.0.26/php.ini-production /opt/php-7.0.26/etc/php.ini
Modifica il file.
sudo nano /opt/php-7.0.26/etc/php.ini
Aggiungi quanto segue in fondo al file.
include_path = "/opt/php-7.0.26/lib/php"
Salva e chiudi il file. Ora possiamo avviare PHP-FPM con:
sudo /opt/php-7.0.26/sbin/php-fpm
Crea unità di servizio Systemd
Crea unità di servizio Systemd per PHP7.0.
sudo nano /etc/systemd/system/php7.0-fpm.service
Copia e incolla le seguenti righe nel file.
[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
Salva e chiudi il file. Ora possiamo uccidere l'attuale PHP7.0-FPM in esecuzione ed eseguirlo tramite systemd. Trova il PID del processo master PHP7.0-FPM.
ps aux | grep php-fpm
Come puoi vedere, il PID è 5066 sulla mia macchina. Quindi posso ucciderlo con:
sudo kill 5066
Nota che il binario PHP7.2-FPM è anche chiamato php-fpm
.Se usi pkill php-fpm
, quindi sia PHP7.2-FPM che PHP7.0-FPM si fermeranno. Ora avvia php7.0-fpm tramite systemd.
sudo systemctl start php7.0-fpm
Abilita l'avvio automatico all'avvio.
sudo systemctl enable php7.0-fpm
Controlla il suo stato.
systemctl status php-fpm
Fai in modo che Nginx utilizzi PHP7.0-FPM
Per fare in modo che Nginx usi PHP7.0 invece di PHP7.2, apri il file di blocco del server Nginx, trova la riga seguente.
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
Cambialo in
fastcgi_pass unix:/run/php-fpm/php7.0-fpm.sock;
Potrebbe esserci più di un'istanza di questa riga. Devi cambiarli tutti. Quindi crea http
(l'utente del server web su Arch Linux) come proprietario di /run/php-fpm/php7.0-fpm.sock
file.
sudo chown http:http /run/php-fpm/php7.0-fpm.sock
Prova la configurazione di Nginx.
sudo nginx -t
Se il test ha esito positivo, ricarica Nginx per rendere effettive le modifiche.
sudo systemctl reload nginx
Questo è tutto! Spero che questo tutorial ti abbia aiutato a compilare PHP7.0/7.1 dal sorgente su Arch Linux. Come sempre, se hai trovato utile questo post, iscriviti alla nostra newsletter gratuita per ricevere suggerimenti e trucchi più utili.