Sådan installeres PHP 7 med Apache og MariaDB på CentOS 7/Debian 8


Sidste sidste uge (mere præcist den 21. august 2015) meddelte PHP-udviklingsteamet tilgængeligheden af den nyeste version af PHP 7 og opfordrede brugere og udviklere over hele verden til at teste det.

Vi skal dog bemærke, at da dette er en RC (Release Candidate) version, forventes det, at den kan have bugs eller inkompatibilitet med eksisterende opsætninger, så brugerne bliver bedt om at rapportere dem ved hjælp af bug tracking-systemet og ikke bruge PHP 7 i produktion, mens den forbliver i den fase.

Den lyse side er, at denne version indeholder flere rettelser (du vil måske henvise til denne side i projektets GitHub-lager for en detaljeret liste over de nye funktioner og forbedringer), hvor den mest karakteristiske funktion er en bemærkelsesværdig stigning i ydeevnen sammenlignet med tidligere versioner.

Denne artikel vil lede dig gennem processen med installation og kompilering af PHP 7 RC1 fra kilde tarball sammen med Apache og MariaDB på CentOS 7 og Debian 8 Jessie. De samme instruktioner fungerer også på CentOS-baserede distributioner som RHEL, Fedora, Scientific Linux og Debian-baserede som Ubuntu/Mint.

Installation af PHP 7 i CentOS 7 og Debian 8

Som nævnt i indledningen, da denne version er en RC i stedet for en stabil frigivelse, kan vi ikke med rimelighed forvente at finde den i arkiverne. Af den grund bliver vi nødt til at downloade kildekoden og kompilere programmet fra bunden.

Før vi gør det, skal vi dog huske, at for bedre at udnytte PHP 7 og måske den bedste måde at prøve det på er at installere det sammen med Apache og MariaDB - som vi KAN finde i arkiverne:

# yum update && yum install httpd mariadb mariadb-server
# aptitude update && aptitude install apache2 mariadb-server mariadb-client mariadb.common

I begge tilfælde kan tarball med kildekoden til PHP downloades og ekstraheres 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, lad os gå ind i /opt/php-7.0.0RC1 og udføre buildconf-scriptet med –force-switch for at tvinge opbygningen af en RC-version:

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

Nu er det tid til at udføre vores velkendte konfigurationskommando. Mens nedenstående valgmuligheder sikrer en standard PHP 7-installation, kan du se den komplette valgliste i PHP-manualen for bedre at tilpasse installationen efter 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 støder på følgende fejl:

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

Du skal blot installere gcc og afhængigheder med følgende kommando og køre ovenstående konfigurationskommando igen.

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

Du er på vej til at kompilere PHP 7, hvilket kan tage et stykke tid. Hvis der mangler andre biblioteker eller ressourcer, mislykkes denne proces, men du kan altid installere dem og køre konfigurere igen.

For eksempel måtte jeg installere libxml2-devel efter at have fået følgende fejlmeddelelse:

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

Desværre kan vi umuligt dække alle sagsscenarier, da den installerede software kan variere fra system til system. Under installationen vil du måske henvise til denne side, der skitserer flere fejl, som du kan støde på, mens du installerer PHP fra kilden sammen med deres respektive løsninger.

Her er en komplet liste over de pakker, jeg skulle installere i min CentOS 7-boks, før jeg kunne gennemføre konfigurationsprocessen:

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 ovennævnte krævede pakker med en 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 meddelelse angiver, at konfigurationen er afsluttet med succes:

Så løb,

# make
# make install

Når installationen er afsluttet, kan du kontrollere versionen ved hjælp af kommandolinjen:

I Debian var jeg nødt til at installere følgende pakker for at konfigurationsprocessen kunne gennemføres med succes:

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 ovennævnte påkrævede pakker med apt-get-kommando på Debian 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

Tilføj derefter –med-libdir =/lib/x86_64-linux-gnu til konfigurationsindstillingerne, og opret følgende symlink til gmp.h-headerfilen:

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

Derefter løb make and make installation som i det foregående tilfælde. Inden for 10-15 minutter skulle kompileringen være afsluttet, og vi kan kontrollere den installerede PHP-version som før:

# make
# make install

Opsætning af php.ini og test af PHP 7-installation

Når du installerer PHP fra kilden, leveres to eksempler php.ini. I dette tilfælde er de placeret inde i /opt/php-7.0.0RC1:

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

Du skal nu kopiere en af dem til/usr/local/lib, som er udpeget som standardplacering for en sådan fil i henhold til installationsnoterne:

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

Og glem ikke at tilføje dette konfigurationsdirektiv til de vigtigste konfigurationsfiler i 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 udelade LoadModule-linjen, og du skal også fjerne og oprette følgende symbolske links til de angivne Apache-moduler:

# 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

Genstart derefter webserveren:

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

Hvis Apache startes i CentOS 7 returnerer en fejlmeddelelse, der siger, at den ikke kan finde libphp7.so-modulet, skal du blot kopiere til den angivne sti fra /opt/php-7.0.0RC1/.libs/libphp7.so.

Den klassiske måde at teste en PHP/Apache-installation på er at bruge en phpinfo() -fil. Opret en fil med navnet test.php med følgende indhold i webserverens dokumentrod (/ var/www/html i begge distributioner):

<?php
phpinfo();
?>

Og start en browser i en klient inden for dit netværk for at teste:

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

Resumé

I denne artikel har vi forklaret, hvordan du installerer PHP 7 fra kildekoden, den nyeste RC af dette populære serversidesprog på serversiden, der har til formål at forbedre ydeevnen til hidtil usete værdier. Indtil den når stalden i november i år 2015, tilrådes du STERKT at IKKE bruge denne udgivelse i et produktionsmiljø.

Hvis du har spørgsmål/kommentarer/forslag til denne artikel, er du velkommen til at give os besked ved hjælp af nedenstående formular.