Zoeken op website

PHP 7 installeren met Apache en MariaDB op CentOS 7/Debian 8


Vorige week (meer precies op 21 augustus 2015) kondigde het PHP-ontwikkelteam de beschikbaarheid aan van de nieuwste release van PHP 7 en moedigde het gebruikers en ontwikkelaars wereldwijd aan om te testen Het.

We moeten er echter rekening mee houden dat, aangezien dit een RC (Release Candidate) versie is, er naar verwachting bugs of incompatibiliteiten met bestaande instellingen aanwezig kunnen zijn, zodat gebruikers wordt gevraagd dit te doen rapporteer ze met behulp van het bugvolgsysteem en gebruik PHP 7 niet in productie zolang het zich in die fase bevindt.

De positieve kant is dat deze versie verschillende reparaties bevat (je kunt misschien deze pagina in de GitHub repository van het project raadplegen voor een gedetailleerde lijst van de nieuwe functies en verbeteringen), waarbij de meest onderscheidende functie een opmerkelijke prestatieverbetering in vergelijking met eerdere versies.

Dit artikel leidt u door het proces van het installeren en compileren van PHP 7 RC1 vanuit bron-tarball samen met Apache en MariaDB op CentOS 7 en Debian 8 Jessie. Dezelfde instructies werken ook op op CentOS gebaseerde distributies zoals RHEL, Fedora, Scientific Linux en Debian< gebaseerd zoals Ubuntu/Mint.

PHP 7 installeren in CentOS 7 en Debian 8

Zoals vermeld in de inleiding, kunnen we, aangezien deze versie een RC is in plaats van een stabiele release, redelijkerwijs niet verwachten dat deze in de repository's wordt aangetroffen. Om die reden zullen we de broncode moeten downloaden en het programma helemaal opnieuw moeten compileren.

Voordat we dat echter doen, moeten we onthouden dat om beter te kunnen profiteren van PHP 7 en misschien wel de beste manier om het uit te proberen het samen met Apache installeren is. en MariaDB – die we KUNNEN vinden in de repositories:

Op CentOS 7


yum update && yum install httpd mariadb mariadb-server

Op Debian8


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

In beide gevallen kan de tarball met de broncode van PHP als volgt worden gedownload en uitgepakt:


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

Als we klaar zijn, gaan we naar /opt/php-7.0.0RC1 en voeren het buildconf script uit met de –force schakelaar om de bouw van een RC-versie:


ls


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

Nu is het tijd om onze bekende configure-opdracht uit te voeren. Hoewel de onderstaande opties een standaard PHP 7-installatie garanderen, kunt u de volledige optielijst in de PHP-handleiding raadplegen om de installatie beter aan uw behoeften aan te passen:


./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

Als u de volgende fout tegenkomt:


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

Installeer eenvoudig gcc en afhankelijkheden met de volgende opdracht en voer de bovenstaande configure opdracht opnieuw uit.


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

U bent bezig met het compileren van PHP 7, wat enige tijd kan duren. Als er nog meer bibliotheken of bronnen ontbreken, mislukt dit proces, maar u kunt deze altijd installeren en configure opnieuw uitvoeren.

Ik moest bijvoorbeeld libxml2-devel installeren nadat ik de volgende foutmelding kreeg:


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

Helaas kunnen we onmogelijk alle scenario's behandelen, omdat de geïnstalleerde software van systeem tot systeem kan verschillen. Tijdens de installatie wil je misschien deze pagina raadplegen, waar verschillende fouten worden beschreven die je tegen kunt komen tijdens het installeren van PHP vanaf de broncode, samen met hun respectievelijke oplossingen.

Op CentOS 7

Hier is een volledige lijst van de pakketten die ik in mijn CentOS 7-box moest installeren voordat ik het configuratieproces kon voltooien:


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

Je kunt alle hierboven vereiste pakketten installeren met één enkele yum opdracht, zoals weergegeven.


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

Het volgende bericht geeft aan dat de configuratie succesvol is voltooid:

Ren dan,


make
make install

Wanneer de installatie voltooid is, kunt u de versie controleren via de opdrachtregel:

Op Debian8

In Debian moest ik de volgende pakketten installeren om het configuratieproces succesvol te laten voltooien:


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

U kunt alle bovengenoemde vereiste pakketten installeren met de opdracht apt-get op 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

Voeg vervolgens –with-libdir=/lib/x86_64-linux-gnu toe aan de configuratieopties, en maak de volgende symbolische link naar het headerbestand gmp.h:


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

Voer vervolgens make en make install uit zoals in het vorige geval. Binnen 10-15 minuten zou de compilatie voltooid moeten zijn en kunnen we de geïnstalleerde PHP-versie verifiëren zoals voorheen:


make
make install

php.ini instellen en PHP 7-installatie testen

Wanneer u PHP vanaf de broncode installeert, worden er twee voorbeelden van php.ini geleverd. In dit geval bevinden ze zich in /opt/php-7.0.0RC1:


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

Je moet er nu één kopiëren naar /usr/local/lib, wat is aangewezen als de standaardlocatie voor een dergelijk bestand, zoals aangegeven in de installatieopmerkingen:


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

En vergeet niet deze configuratierichtlijn toe te voegen aan de hoofdconfiguratiebestanden van 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>

In Debian 8 kunt u de regel LoadModule weglaten en moet u ook de volgende symbolische links naar de aangegeven Apache-modules verwijderen en maken:


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 vervolgens de webserver opnieuw op:


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

Als het opstarten van Apache in CentOS 7 een foutmelding retourneert waarin staat dat de module libphp7.so niet kan worden gevonden, kopieer dan eenvoudigweg naar het aangegeven pad van /opt/php-7.0.0RC1/.libs/libphp7.so.

De klassieke manier om een PHP/Apache-installatie te testen is het gebruik van een phpinfo()-bestand. Maak een bestand met de naam test.php met de volgende inhoud in de documentroot van de webserver (/var/www/html in beide distributies):


<?php
phpinfo();
?>

En start een browser in een client binnen uw netwerk om het volgende te testen:


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

Samenvatting

In dit artikel hebben we uitgelegd hoe je PHP 7 installeert vanuit de broncode, de nieuwste RC van deze populaire server-side scripttaal die tot doel heeft de prestaties te verbeteren met ongekende waarden. Totdat het de stabiele waarde bereikt in november van dit jaar 2015, wordt u STERK geadviseerd om NIET gebruik deze release in een productieomgeving.

Heeft u vragen/opmerkingen/suggesties over dit artikel, laat het ons dan gerust weten via onderstaand formulier.