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.