GNU/Linux >> Linux Esercitazione >  >> Arch Linux

Come compilare PHP7.0/PHP7.1 dal sorgente su Arch Linux

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.


Arch Linux
  1. Come compilare Brotli dal sorgente su Ubuntu 18.04 LTS

  2. Come compilare Brotli dal sorgente su CentOS 7

  3. Come usare Pacman su Arch Linux

  4. Come installare PHP su Linux Mint 19

  5. Come compilare e installare software dal codice sorgente su Linux

Come installare Virtualbox in Arch Linux

Come installare il software dal sorgente in Linux

Come collegare iPhone ad Arch Linux

Come installare Skype su Arch Linux

Come installare Java su Arch Linux

Come compilare il kernel Linux dal sorgente per creare un kernel personalizzato