Hvordan installere PHP 7 med Apache og MariaDB på CentOS 7/Debian 8


Forrige uke (nærmere bestemt 21. august 2015) kunngjorde PHP-utviklingsteamet tilgjengeligheten av den siste versjonen av PHP 7 og oppfordret brukere og utviklere over hele verden til å teste den.

Vi må imidlertid merke oss at siden dette er en RC (Release Candidate) versjon, forventes det at den kan ha feil eller inkompatibilitet med eksisterende oppsett, så brukere blir bedt om å rapporter dem ved å bruke feilsporingssystemet og ikke bruke PHP 7 i produksjonen mens den er i den fasen.

Den lyse siden er at denne versjonen inkluderer flere rettelser (det kan være lurt å referere til denne siden i prosjektets GitHub-depot for en detaljert liste over de nye funksjonene og forbedringene), med den mest karakteristiske funksjonen en bemerkelsesverdig ytelsesøkning sammenlignet med tidligere versjoner.

Denne artikkelen vil lede deg gjennom prosessen med å installere og kompilere PHP 7 RC1 fra kilde tarball sammen med Apache og MariaDBCentOS 7 og Debian 8 Jessie. De samme instruksjonene fungerer også på CentOS-baserte distribusjoner som RHEL, Fedora, Scientific Linux og Debian< basert som Ubuntu/Mint.

Installere PHP 7 i CentOS 7 og Debian 8

Som nevnt i introduksjonen, siden denne versjonen er en RC i stedet for en stabil utgivelse, kan vi ikke med rimelighet forvente å finne den i depotene. Av den grunn må vi laste ned kildekoden og kompilere programmet fra bunnen av.

Før vi gjør det, må vi imidlertid huske at for bedre å kunne dra nytte av PHP 7 og kanskje den beste måten å prøve det på er å installere det sammen med Apache og MariaDB – som vi KAN finne i depotene:

På CentOS 7


yum update && yum install httpd mariadb mariadb-server

På Debian 8


aptitude update && aptitude install apache2 mariadb-server mariadb-client mariadb.common

I begge tilfeller kan tarballen med kildekoden til PHP lastes ned og trekkes ut som følger:


wget https://downloads.php.net/~ab/php-7.0.0RC1.tar.gz
tar xzf php-7.0.0RC1.tar.gz -C /opt

Når det er gjort, la oss gå inn i /opt/php-7.0.0RC1 og kjøre buildconf-skriptet med –force-bryteren for å tvinge bygget av en RC-versjon:


ls


cd /opt/php-7.0.0RC1.tar.gz
./buildconf --force

Nå er det på tide å utføre vår velkjente configure-kommando. Mens alternativene nedenfor vil sikre en standard PHP 7-installasjon, kan du referere til den fullstendige alternativlisten i PHP-manualen for å bedre tilpasse installasjonen etter dine behov:


./configure \
--prefix=$HOME/php7/usr \
--with-config-file-path=$HOME/php7/usr/etc \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--enable-pcntl \
--enable-ftp \
--enable-exif \
--enable-calendar \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-curl \
--with-mcrypt \
--with-iconv \
--with-gmp \
--with-pspell \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-zlib-dir=/usr \
--with-xpm-dir=/usr \
--with-freetype-dir=/usr \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-openssl \
--with-pdo-mysql=/usr \
--with-gettext=/usr \
--with-zlib=/usr \
--with-bz2=/usr \
--with-recode=/usr \
--with-mysqli=/usr/bin/mysql_config \
--with-apxs2

Hvis du får følgende feil:


configure: error: no acceptable C compiler found in $PATH
see 'config.log' for more details

Bare installer gcc og avhengigheter med følgende kommando og kjør kommandoen configure ovenfor på nytt.


yum install gcc       [On CentOS 7 box]
aptitude install gcc  [On Debian 8 box]

Du er på vei til å kompilere PHP 7, noe som kan ta en stund. Hvis det er andre manglende biblioteker eller ressurser, vil denne prosessen mislykkes, men du kan alltid installere dem og kjøre konfigureringen på nytt.

For eksempel måtte jeg installere libxml2-devel etter å ha fått følgende feilmelding:


configure: error: xml2-config not found. Please check your libxml2 installation.

Dessverre kan vi umulig dekke alle saksscenarier siden den installerte programvaren kan variere fra ett system til et annet. Under installasjonen kan det være lurt å referere til denne siden som skisserer flere feil som du kan støte på mens du installerer PHP fra kilden, sammen med deres respektive løsninger.

På CentOS 7

Her er en komplett liste over pakkene jeg måtte installere i CentOS 7-boksen før jeg kunne fullføre konfigureringsprosessen:


gcc
libxml2-devel
pkgconfig
openssl-devel
bzip2-devel
curl-devel
libpng-devel
libpng-devel
libjpeg-devel
libXpm-devel
freetype-devel
gmp-devel
libmcrypt-devel
mariadb-devel
aspell-devel
recode-devel
httpd-devel

Du kan installere alle de nødvendige pakkene ovenfor med én enkelt yum-kommando som vist.


yum install gcc libxml2-devel pkgconfig openssl-devel bzip2-devel libpng-devel libpng-devel libjpeg-devel libXpm-devel freetype-devel gmp-devel libmcrypt-devel mariadb-devel aspell-devel recode-devel httpd-devel

Følgende melding indikerer at konfigureringen er fullført:

Så løp,


make
make install

Når installasjonen er fullført kan du sjekke versjonen ved å bruke kommandolinjen:

På Debian 8

I Debian måtte jeg installere følgende pakker for at konfigurasjonsprosessen skulle fullføres:


make
libxml2-dev
libcurl4-openssl-dev
libjpeg-dev
libpng-dev
libxpm-dev
libmysqlclient-dev
libicu-dev
libfreetype6-dev
libxslt-dev
libssl-dev
libbz2-dev
libgmp-dev
libmcrypt-dev
libpspell-dev 
librecode-dev
apache2-dev

Du kan installere alle de nødvendige pakkene ovenfor med kommandoen apt-getDebian 8.


apt-get install make libxml2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libxpm-dev libmysqlclient-dev libicu-dev libfreetype6-dev libxslt-dev libssl-dev libbz2-dev libgmp-dev libmcrypt-dev libpspell-dev librecode-dev apache2-dev

Legg deretter til –with-libdir=/lib/x86_64-linux-gnu til konfigureringsalternativene, og lag følgende symbolkobling til gmp.h-overskriftsfilen:


ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h

Deretter kjørte make og make install som i forrige tilfelle. Innen 10-15 minutter skal kompileringen ha fullført, og vi kan bekrefte den installerte PHP-versjonen som før:


make
make install

Oppsett php.ini og testing av PHP 7-installasjon

Når du installerer PHP fra kilden, får du to eksempler på php.ini. I dette tilfellet er de plassert inne i /opt/php-7.0.0RC1:


ls -l /opt/php-7.0.0RC1 | grep php.ini

Du må nå kopiere en av dem til /usr/local/lib, som er utpekt som standardplassering for en slik fil i henhold til installasjonsnotatene:


cp /opt/php-7.0.0RC1/php.ini-development /usr/local/lib

Og ikke glem å legge til dette konfigurasjonsdirektivet til hovedkonfigurasjonsfilene til Apache.


/etc/httpd/conf/httpd.conf    [On CentOS 7 box]
/etc/apache2/apache2.conf in  [On Debian 8 box] 

LoadModule php7_module        /usr/lib64/httpd/modules/libphp7.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

I Debian 8 kan du utelate LoadModule-linjen, og du må også fjerne og opprette følgende symbolske lenker til de angitte Apache-modulene:


cd /etc/apache2
rm mods-enabled/mpm_event.conf
rm mods-enabled/mpm_event.load
ln -s mods-available/mpm_prefork.conf mpm_prefork.conf
ln -s mods-available/mpm_prefork.load mpm_prefork.load

Start deretter webserveren på nytt:


systemctl restart httpd     [On CentOS 7 box]
systemctl restart apache2   [On Debian 8 box]

Hvis oppstart av Apache i CentOS 7 returnerer en feilmelding som sier at den ikke finner libphp7.so-modulen, kopierer du bare til den angitte banen fra /opt/php-7.0.0RC1/.libs/libphp7.so.

Den klassiske måten å teste en PHP/Apache-installasjon på er å bruke en phpinfo()-fil. Lag en fil med navnet test.php med følgende innhold i nettserverens dokumentrot (/var/www/html i begge distribusjonene):


<?php
phpinfo();
?>

Og start en nettleser i en klient i nettverket ditt for å teste:


http://localhost/test.php
OR
http://IP-address/test.php

Sammendrag

I denne artikkelen har vi forklart hvordan du installerer PHP 7 fra kildekoden, den nyeste RC-en til dette populære serverside-skriptspråket som tar sikte på å forbedre ytelsen til enestående verdier. Inntil den når stallen i november i år 2015, anbefales du STERKT å IKKEbruk denne utgivelsen i et produksjonsmiljø.

Hvis du har spørsmål/kommentarer/forslag til denne artikkelen, kan du gjerne gi oss beskjed ved å bruke skjemaet nedenfor.