Zoeken op website

Installeer PHP 8.1 en stel een lokale ontwikkelomgeving in op Ubuntu


Een eerdere versie van deze handleiding is geschreven door alenaholligan.

Inleiding

PHP is een populaire, open-source server-side scripttaal die is ontworpen voor webontwikkeling en een groot deel van het internet aandrijft, van blogs en e-commerce websites tot grootschalige applicaties. Met elke nieuwe release biedt PHP verbeterde prestaties, veiligheid en moderne ontwikkelfunctionaliteiten om ontwikkelaars te helpen robuuste en schaalbare software te bouwen.

PHP 8.1 is een stabiele release met langdurige ondersteuning die merkbare verbeteringen en nieuwe taalfuncties biedt, terwijl de betrouwbaarheid behouden blijft. Het installeren van PHP 8.1 op Ubuntu zorgt ervoor dat je lokale ontwikkelomgeving up-to-date, veilig en compatibel is met veelgebruikte frameworks en platforms zoals WordPress, Laravel en aangepaste PHP-toepassingen.

Deze handleiding begeleidt je bij het installeren van PHP 8.1 op Ubuntu, het configureren ervan met Apache of Nginx, het instellen van essentiële PHP-extensies en het installeren van Composer voor afhankelijkheidsbeheer. Je leert ook hoe je je installatie kunt verifiëren en veelvoorkomende problemen kunt oplossen.

Zet je PHP-applicaties in vanaf GitHub met het App Platform van Linux-Console.net. Laat Linux-Console.net zich richten op het schalen van je app.

Belangrijkste punten

  • PHP 8.1-installatie op Ubuntu 22.04: Ubuntu 22.04 LTS bevat PHP 8.1 in de standaardrepositories, waardoor je een stabiele, langdurig ondersteunde PHP-versie kunt installeren met apt zonder externe PPA's. Dit zorgt voor voorspelbare updates, beveiligingspatches en compatibiliteit met moderne PHP-frameworks.

  • Essentiële PHP-extensies voor real-world projecten: De meeste productieklare PHP-toepassingen zijn afhankelijk van extensies zoals mysql, curl, xml, mbstring, zip, gd en bcmath. Het vroegtijdig installeren hiervan voorkomt runtime-fouten later en zorgt voor compatibiliteit met frameworks zoals Laravel, Symfony en WordPress.

  • Kiezen tussen Apache of Nginx voor PHP-ontwikkeling: Apache kan PHP direct uitvoeren met mod_php, terwijl Nginx PHP-FPM nodig heeft voor het afhandelen van verzoeken. Beide benaderingen werken goed voor lokale ontwikkeling, maar PHP-FPM lijkt meer op moderne productieomgevingen en schaalt beter bij hoge belasting.

  • Composer als de basis van moderne PHP-workflows: Composer beheert projectafhankelijkheden via composer.json en composer.lock, waardoor consistente builds op verschillende machines worden gegarandeerd. Het is essentieel voor het installeren van frameworks, het genereren van autoloaders en het onderhouden van betrouwbare afhankelijkheidsversies in collaboratieve PHP-projecten.

  • PHP specifiek voor ontwikkeling configureren: Ontwikkelomgevingen profiteren van uitgebreide foutmeldingen, hogere geheugengrenzen en langere uitvoeringstijden. Het aanpassen van deze instellingen in php.ini helpt om bugs tijdens de ontwikkeling snel te ontdekken, maar ze moeten altijd teruggezet worden voor productie-implementaties.

  • Probleemoplossing en validatie maken deel uit van de installatie: Het controleren van PHP met php -v, het controleren van geladen extensies en het bekijken van Apache-, Nginx- of PHP‑FPM-logboeken zijn cruciale stappen. De meeste installatieproblemen worden veroorzaakt door ontbrekende extensies, permissies of verkeerd geconfigureerde webserver-instructies.

Vereisten

Om deze tutorial te voltooien, heb je nodig:

  • Een lokale machine of virtuele server die Ubuntu draait (compatibel met Ubuntu 22.04 LTS en latere versies)
  • Administratieve (sudo) toegang tot de machine
  • Een actieve internetverbinding
  • Basiskennis van de opdrachtregel

Als je een nieuwe Ubuntu-server aan het opzetten bent, bekijk dan onze gids over de eerste serverconfiguratie met Ubuntu.

Stap 1 — PHP 8.1 instellen

Je zult je installatie en configuratie via de opdrachtregel voltooien, wat een niet-grafische manier is om met je computer te communiceren. Dat wil zeggen, in plaats van op knoppen te klikken, typ je tekst in en ontvang je ook feedback van je computer via tekst.

De opdrachtregel, ook bekend als een shell of terminal, kan je helpen veel van de taken die je elke dag op een computer uitvoert te wijzigen en te automatiseren en is een essentieel hulpmiddel voor softwareontwikkelaars. Er zijn veel terminalopdrachten om te leren die je in staat kunnen stellen krachtigere dingen te doen. Het artikel Een introductie tot de Linux-terminal kan je beter helpen vertrouwd te raken met de terminal.

Opmerking: Als je nieuw bent met Ubuntu, overweeg dan om onze Ubuntu-documentatie te bekijken voor extra richtlijnen voor systeembeheer.

Op Ubuntu kun je de Terminal-applicatie vinden door op het Ubuntu-pictogram in de linkerbovenhoek van je scherm te klikken en terminal in de zoekbalk te typen. Klik op het Terminal-pictogram om het te openen. Je kunt ook tegelijkertijd op de CTRL, ALT en T toetsen op je toetsenbord drukken om de Terminal-applicatie automatisch te openen.

Opmerking: Op Ubuntu 22.04 LTS is PHP 8.1 beschikbaar in de standaardrepositories. Wanneer je PHP installeert zonder een versie op te geven op Ubuntu 22.04, installeert het systeem standaard PHP 8.1.

Als je meerdere PHP-versies moet beheren of een andere versie wilt installeren, overweeg dan het gebruik van phpenv of phpbrew voor versiebeheer.

Voer de volgende opdrachten uit om je lijst met beschikbare pakketten bij te werken en installeer vervolgens PHP 8.1:

sudo apt update
sudo apt install --no-install-recommends php8.1

De --no-install-recommends-vlag zorgt ervoor dat andere pakketten zoals de Apache-webserver niet worden geïnstalleerd.

Controleer uw PHP-versie-informatie met het volgende commando:

php -v

Je krijgt output zoals deze:

PHP 8.1.2-1ubuntu2.22 (cli) (built: Jul 15 2025 12:11:22) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.2-1ubuntu2.22, Copyright (c), by Zend Technologies

Deze setup is getest op Ubuntu 22.04 LTS met PHP 8.1-pakketten uit de officiële Ubuntu-repositories.

Installeer essentiële PHP-extensies voor webontwikkeling:

sudo apt install -y php8.1-cli php8.1-common php8.1-mysql php8.1-zip php8.1-gd php8.1-mbstring php8.1-curl php8.1-xml php8.1-bcmath

Dit commando zal de volgende modules installeren:

  • php8.1-cli - opdrachtinterpreter, handig voor het testen van PHP-scripts vanuit een shell of voor het uitvoeren van algemene shell-scriptingtaken
  • php8.1-common - documentatie, voorbeelden en veelgebruikte modules voor PHP
  • php8.1-mysql - voor het werken met MySQL-databases
  • php8.1-zip - voor het werken met gecomprimeerde bestanden
  • php8.1-gd - voor het werken met afbeeldingen
  • php8.1-mbstring - gebruikt voor het beheren van niet-ASCII-tekens
  • php8.1-curl - Hiermee kun je HTTP-aanvragen doen in PHP
  • php8.1-xml - voor het werken met XML-gegevens
  • php8.1-bcmath - wordt gebruikt bij het werken met precisie-floating point getallen

PHP-configuratiebestanden worden opgeslagen in /etc/php/8.1/. Het hoofdconfiguratiebestand is php.ini, dat afhankelijk van je installatie in verschillende mappen kan staan:

  • CLI-configuratie: /etc/php/8.1/cli/php.ini
  • Apache-configuratie: /etc/php/8.1/apache2/php.ini (als Apache is geïnstalleerd)
  • PHP-FPM configuratie: /etc/php/8.1/fpm/php.ini (als PHP-FPM is geïnstalleerd)

Controleer geïnstalleerde extensies:

php -m

Dit geeft een overzicht van alle geladen PHP-modules. Als php -v een andere versie aangeeft dan verwacht, kan het zijn dat er meerdere PHP-versies zijn geïnstalleerd. Gebruik php8.1 -v om specifiek PHP 8.1 te controleren.

Je hebt PHP geïnstalleerd en gecontroleerd welke versie je gebruikt. Je hebt ook alle benodigde PHP-modules geïnstalleerd en kon de modules die je hebt geladen, weergeven.

Stap 2 — PHP configureren met Apache

Installeer de Apache PHP-module:

sudo apt install libapache2-mod-php8.1

Schakel de module in en herstart Apache:

sudo a2enmod php8.1
sudo systemctl restart apache2

Begrijpen van mod_php: De mod_php-module embed PHP direct in het Apache-proces. Wanneer Apache een verzoek voor een PHP-bestand ontvangt, verwerkt het dit intern met de ingebedde PHP-interpreter. Dit verschilt van Nginx, dat een aparte PHP-FPM-service vereist. Het a2enmod-commando maakt een symbolische link in /etc/apache2/mods-enabled/ om de module te activeren.

Controleer of Apache PHP correct verwerkt door een testbestand aan te maken in de documentroot van Apache (meestal /var/www/html):

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

Bezoek http://localhost/info.php in je browser. Je zou de configuratiepagina van PHP moeten zien. Verwijder dit bestand na het testen voor de veiligheid:

sudo rm /var/www/html/info.php

Problemen met Apache PHP oplossen

Als Apache niet wil starten na het installeren van mod_php:

Controleer het foutlogboek van Apache:

sudo tail -20 /var/log/apache2/error.log

Veelvoorkomende problemen zijn:

  • In strijd zijnde PHP-modules: Als je meerdere PHP-versies hebt, schakel dan eerst de andere PHP-modules uit met sudo a2dismod php7.4 (indien aanwezig)
  • Syntaxisfouten in de Apache-configuratie: Voer sudo apache2ctl configtest uit om te controleren

Als je localhost bezoekt en “It works!” ziet, maar PHP-bestanden als platte tekst worden weergegeven:

Dit betekent dat Apache PHP niet verwerkt. Controleer:

  1. Controleer of de module is ingeschakeld:
apache2ctl -M | grep php
  1. Als er niets verschijnt, is de module niet geladen. Schakel deze opnieuw in:
sudo a2enmod php8.1
sudo systemctl restart apache2
  1. Controleer of je PHP-bestand de juiste extensie heeft (.php) en PHP-code bevat

Als je een 403 Forbidden-fout krijgt:

Controleer de bestandsmachtigingen:

sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

Beveiligingsnotitie: De phpinfo()-functie geeft gedetailleerde systeeminformatie weer. Laat nooit bestanden met phpinfo() achter op productieservers.

Apache Virtual Host-configuratie

Voor lokale ontwikkeling met aangepaste domeinen, maak een virtuele host aan:

sudo nano /etc/apache2/sites-available/example.local.conf

Voeg deze configuratie toe:

<VirtualHost *:80>
    ServerName example.local
    DocumentRoot /var/www/example.local
    <Directory /var/www/example.local>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
  • ServerName: De domeinnaam voor deze virtuele host
  • DocumentRoot: Waar je PHP-bestanden zich bevinden
  • AllowOverride All: Hiermee kunnen .htaccess-bestanden de Apache-instellingen overschrijven (nodig voor frameworks zoals Laravel)
  • Require all granted: Staat toegang tot de directory toe

Maak de map aan, schakel de site in en herstart Apache:

sudo mkdir -p /var/www/example.local
sudo chown -R www-data:www-data /var/www/example.local
sudo a2ensite example.local.conf
sudo systemctl restart apache2

Voeg het domein toe aan je /etc/hosts-bestand voor lokale toegang:

echo "127.0.0.1 example.local" | sudo tee -a /etc/hosts

Kiezen tussen Apache en Nginx

Voordat u uw webserver configureert, overweeg welke het beste bij uw behoeften past:

KenmerkApache met mod_phpNginx met PHP-FPM
PHP-verwerkingIngebed in het Apache-procesAparte PHP-FPM-service
GeheugengebruikHoger (PHP in elk Apache-proces)Lager (apart procespool)
PrestatieGeschikt voor laag tot gemiddeld verkeerBeter voor veel verkeer en gelijktijdige verzoeken
ConfiguratieEenvoudigere initiële installatieComplexer (vereist PHP-FPM-configuratie)
.htaccess OndersteuningNative ondersteuningNiet ondersteund (moet worden geconfigureerd in serverblokken)
ProductiegebruikVeelvoorkomend bij gedeelde hostingVeelvoorkomend in moderne implementaties
LeercurveGemakkelijker voor beginnersSteilere leercurve
Efficiëntie van hulpbronnenMinder efficiënt bij hoge belastingEfficiënter bij hoge belasting

Wanneer kiezen voor Apache:

  • Je bent bekend met Apache of hebt .htaccess-ondersteuning nodig
  • Een eenvoudige ontwikkelomgeving instellen
  • Werken met frameworks die sterk afhankelijk zijn van .htaccess (sommige WordPress-omgevingen)
  • Je geeft de voorkeur aan een eenvoudigere initiële configuratie

Wanneer Nginx te kiezen:

  • Je hebt betere prestaties nodig bij hoge belasting
  • Je wilt moderne productieomgevingen nabootsen
  • Je bouwt toepassingen die zullen opschalen
  • Je geeft de voorkeur aan een modernere architectuur

Beide werken even goed voor lokale ontwikkeling. De keuze komt vaak neer op persoonlijke voorkeur of bestaande infrastructuur.

Stap 3 — PHP configureren met Nginx

Installeer PHP-FPM (FastCGI Process Manager):

sudo apt install php8.1-fpm

Start en schakel PHP-FPM in:

sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm

Begrijpen van PHP-FPM en FastCGI: In tegenstelling tot Apache’s mod_php, verwerkt Nginx PHP niet direct. PHP-FPM (FastCGI Process Manager) draait als een aparte service waarmee Nginx communiceert via het FastCGI-protocol. FastCGI is een binair protocol om programma’s te koppelen aan webservers—het is sneller dan traditionele CGI omdat het processen levend houdt tussen verzoeken door.

Wanneer Nginx een verzoek voor een PHP-bestand ontvangt, stuurt het het verzoek door naar PHP-FPM via een Unix-socket (of TCP-verbinding). PHP-FPM verwerkt de PHP-code en stuurt het resultaat terug naar Nginx, dat het vervolgens naar de cliënt verzendt. Deze scheiding stelt PHP-FPM in staat om zijn eigen pool van processen te beheren, wat de prestaties en het resourcebeheer verbetert.

Nginx-serverblokconfiguratie

Maak een serverblokconfiguratie:

sudo nano /etc/nginx/sites-available/example.local

Voeg deze configuratie toe:

server {
    listen 80;
    server_name example.local;
    root /var/www/example.local;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

Configuratie uitgelegd:

  • root: Map waar je PHP-bestanden zich bevinden
  • location ~ \.php$: Komt overeen met alle aanvragen die eindigen op .php met behulp van regex
  • include snippets/fastcgi-php.conf: Voegt Nginx’s standaard FastCGI-configuratie toe (stelt SCRIPT_FILENAME en andere vereiste variabelen in)
  • fastcgi_pass unix:/var/run/php/php8.1-fpm.sock: De Unix-socket waar PHP-FPM naar luistert. Dit is hoe Nginx communiceert met PHP-FPM. Het pad van de socket is gedefinieerd in /etc/php/8.1/fpm/pool.d/www.conf

Schakel de site in en test de configuratie:

sudo mkdir -p /var/www/example.local
sudo chown -R www-data:www-data /var/www/example.local
sudo ln -s /etc/nginx/sites-available/example.local /etc/nginx/sites-enabled/
sudo nginx -t

Als de test slaagt, start Nginx opnieuw:

sudo systemctl restart nginx

Voeg de domeinnaam toe aan /etc/hosts:

echo "127.0.0.1 example.local" | sudo tee -a /etc/hosts

Maak een test PHP-bestand aan:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/example.local/info.php

Bezoek http://example.local/info.php. Je zou de configuratiepagina van PHP moeten zien. Verwijder het testbestand na verificatie:

sudo rm /var/www/example.local/info.php

Problemen met Nginx PHP oplossen

Als je de fout “502 Bad Gateway” krijgt:

Dit betekent dat Nginx niet kan communiceren met PHP-FPM. Controleer:

  1. Controleer of PHP-FPM actief is:
sudo systemctl status php8.1-fpm
  1. Controleer of het socketpad correct is. De locatie van de socket wordt gedefinieerd in /etc/php/8.1/fpm/pool.d/www.conf:
grep listen /etc/php/8.1/fpm/pool.d/www.conf

Je zou iets moeten zien zoals listen=/run/php/php8.1-fpm.sock. Het pad in je Nginx-configuratie moet precies overeenkomen. Let op dat /var/run vaak een symlink is naar /run, dus beide paden werken.

  1. Controleer de machtigingen van het socketbestand:
ls -la /var/run/php/php8.1-fpm.sock

De socket moet eigendom zijn van www-data of van de gebruiker waaronder Nginx draait. Als de rechten verkeerd zijn:

sudo chown www-data:www-data /var/run/php/php8.1-fpm.sock
  1. Controleer het Nginx-foutlogboek:
sudo tail -20 /var/log/nginx/error.log

Je kunt fouten zoals zien:

connect() to unix:/var/run/php/php8.1-fpm.sock failed (2: No such file or directory)

Dit geeft aan dat het socketpad onjuist is of dat PHP-FPM niet draait.

Als PHP-bestanden worden gedownload in plaats van uitgevoerd:

Dit betekent dat Nginx PHP-bestanden niet doorstuurt naar PHP-FPM. Controleer:

  • Het location ~ \.php$-blok bestaat in je serverconfiguratie
  • De fastcgi_pass-instructie verwijst naar de juiste socket
  • Je hebt Nginx opnieuw gestart nadat je wijzigingen had aangebracht

Als je 'Bestand niet gevonden'-fouten krijgt:

Controleer of snippets/fastcgi-php.conf bestaat:

ls -la /etc/nginx/snippets/fastcgi-php.conf

Dit bestand stelt SCRIPT_FILENAME in, wat PHP-FPM vertelt welk bestand uitgevoerd moet worden. Zonder dit weet PHP-FPM niet welk bestand verwerkt moet worden.

Stap 4 — PHP configureren voor ontwikkeling

Configureer PHP voor ontwikkeling door de foutmeldingweergave, weergave-instellingen en geheugenlimieten in php.ini aan te passen. Deze instellingen verschillen van productieconfiguraties.

PHP gebruikt aparte configuratiebestanden voor CLI (commandoregel) en webservergebruik. Bewerk het juiste bestand:

Voor CLI (bij het uitvoeren van PHP vanuit de terminal):

sudo nano /etc/php/8.1/cli/php.ini

Voor webserver (Apache of Nginx met PHP-FPM):

# For Apache
sudo nano /etc/php/8.1/apache2/php.ini

# For PHP-FPM (Nginx)
sudo nano /etc/php/8.1/fpm/php.ini

Opmerking: Als je zowel de CLI als de webserver gebruikt, moet je beide bestanden afzonderlijk configureren. Wijzigingen in cli/php.ini hebben geen invloed op webverzoeken, en wijzigingen in apache2/php.ini of fpm/php.ini hebben geen invloed op CLI-scripts.

Belangrijke ontwikkelingsinstellingen

Zoek deze instellingen en werk ze bij in je php.ini-bestand:

display_errors = On
display_startup_errors = On
error_reporting = E_ALL
log_errors = On
error_log = /var/log/php_errors.log
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
date.timezone = America/New_York

Wat elke instelling doet:

  • display_errors=On: Toont PHP-fouten rechtstreeks in de browser (handig voor het debuggen, gevaarlijk in productie)
  • display_startup_errors=On: Toont fouten die optreden tijdens het opstarten van PHP
  • error_reporting=E_ALL: Meldt alle soorten fouten (waarschuwingen, meldingen, enz.)
  • log_errors=On: Schrijft fouten naar een logbestand
  • error_log: Waar PHP foutlogboeken schrijft
  • memory_limit=256M: Maximale hoeveelheid geheugen die een script kan gebruiken (verhoog dit als je 'memory exhausted'-fouten krijgt)
  • upload_max_filesize=64M: Maximale grootte voor geüploade bestanden
  • post_max_size=64M: Maximale grootte voor POST-gegevens (moet groter zijn dan upload_max_filesize)
  • max_execution_time=300: Maximale tijd dat een script kan draaien (in seconden)
  • date.timezone: Stelt de standaardtijdzone in (gebruik je lokale tijdzone: Asia/Kolkata, Europe/London, UTC, enz.)

Productiewaarschuwing: Gebruik deze ontwikkelinstellingen nooit in productie. Stel altijd display_errors=Off in en gebruik geschikte foutmeldingsniveaus op live servers.

Start uw webserver opnieuw op nadat u wijzigingen hebt aangebracht:

# For Apache
sudo systemctl restart apache2

# For PHP-FPM
sudo systemctl restart php8.1-fpm

Uw configuratie verifiëren

Controleer of je wijzigingen effect hebben gehad:

# For CLI
php -i | grep display_errors

# For web server (create a test file)
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/test.php

Bezoek het testbestand in je browser en zoek naar display_errors. Het zou On moeten tonen. Verwijder het testbestand na verificatie.

Als je wijzigingen niet verschijnen:

  1. Zorg ervoor dat je het juiste php.ini-bestand hebt bewerkt (CLI versus webserver)
  2. Controleer de instellingen op typfouten (ze zijn hoofdlettergevoelig)
  3. Start je webserver opnieuw op na het aanbrengen van wijzigingen
  4. Sommige instellingen kunnen worden overschreven door .htaccess (Apache) of php.ini in je projectmap

Je zou nu meteen kunnen beginnen met het gebruiken van PHP, maar je zult waarschijnlijk verschillende bibliotheken willen gebruiken om snel PHP-toepassingen te bouwen. Voordat je je PHP-omgeving test, stel eerst een afhankelijkheidsbeheerder voor je projecten in.

Stap 5 — Composer instellen voor afhankelijkheidsbeheer (optioneel)

Bibliotheken zijn een verzameling code die je kunnen helpen bij het oplossen van veelvoorkomende problemen zonder alles zelf te hoeven schrijven. Omdat er veel bibliotheken beschikbaar zijn, helpt het gebruik van een afhankelijkheidsbeheerder je om meerdere bibliotheken te beheren naarmate je meer ervaring krijgt met het schrijven van PHP.

Composer is een hulpmiddel voor het beheer van afhankelijkheden in PHP. Hiermee kunt u de bibliotheken opgeven waarvan uw project afhankelijk is en zal het helpen bij het installeren en bijwerken van deze pakketten.

Hoewel vergelijkbaar, is Composer geen pakketbeheerder in dezelfde zin als yum of apt. Het gaat om "pakketten" of bibliotheken, maar het beheert ze op projectbasis, waarbij ze worden geïnstalleerd in een map (bijvoorbeeld vendor) binnen je project. Standaard installeert het niets globaal. Het is dus een afhankelijkheidsbeheerder. Het ondersteunt echter wel een globaal project voor het gemak via het global-commando.

Dit idee is niet nieuw, en Composer is sterk geïnspireerd door Node’s npm en Ruby’s bundler.

Stel voor :

  • Je hebt een project dat afhankelijk is van verschillende bibliotheken.
  • Sommige van die bibliotheken zijn afhankelijk van andere bibliotheken.

Componist:

  • Stelt je in staat de bibliotheken waarop je afhankelijk bent te declareren.
  • Komt erachter welke versies van welke pakketten geïnstalleerd kunnen en moeten worden en installeert ze door ze in je project te downloaden.
  • Stelt je in staat om al je afhankelijkheden met één commando bij te werken.
  • Stelt je in staat om het hoofdstuk Basisgebruik te bekijken voor meer details over het declareren van afhankelijkheden.

Download de Composer-installatieprogramma:

curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php

Controleer de integriteit van de installer door de SHA-384-hash te controleren. Verkrijg de nieuwste hash:

HASH=$(curl -sS https://composer.github.io/installer.sig)

Controleer of de hash overeenkomt:

php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('/tmp/composer-setup.php'); } echo PHP_EOL;"

Je zou moeten zien:

Installer verified

Als je Installer corrupt ziet, was de download onvolledig of is deze aangetast. Download de installer opnieuw en controleer de hash. Als het nog steeds niet lukt, controleer dan je internetverbinding of probeer te downloaden via een ander netwerk.

Installeer Composer wereldwijd:

sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer

Je ontvangt een uitvoer die hierop lijkt:

All settings correct for using Composer
Downloading...

Composer (version 2.3.5) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

Test uw installatie:

composer

Je ontvangt uitvoer zoals de volgende:

   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.3.5 2022-04-13 16:43:00

Usage:
  command [options] [arguments]

Options:
  -h, --help                     Display help for the given command. When no command is given display help for the list command
  -q, --quiet                    Do not output any message
  -V, --version                  Display this application version
      --ansi|--no-ansi           Force (or disable --no-ansi) ANSI output
  -n, --no-interaction           Do not ask any interactive question
      --profile                  Display timing and memory usage information
      --no-plugins               Whether to disable plugins.
      --no-scripts               Skips the execution of all scripts defined in composer.json file.
  -d, --working-dir=WORKING-DIR  If specified, use the given directory as working directory.
      --no-cache                 Prevent use of the cache
  -v|vv|vvv, --verbose           Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
. . .

Dit controleert of Composer succesvol op uw systeem is geïnstalleerd en systeembreed beschikbaar is.

Opmerking: Als je liever aparte Composer-uitvoerbare bestanden hebt voor elk project dat je op je server host, kun je het lokaal installeren, per project. Deze methode is ook handig wanneer je systeemgebruiker geen toestemming heeft om software systeemwijd te installeren.

Om dit te doen, gebruik je het commando php /tmp/composer-setup.php zonder enige argumenten. Dit commando genereert een composer.phar-bestand in je huidige map, dat je kunt uitvoeren met php composer.phar.

Stap 6 — Composer gebruiken in een PHP-project

Als laatste stap kunt u uw project optioneel initialiseren met composer init. Dit zal het composer.json-bestand aanmaken dat uw projectafhankelijkheden beheert. Het initialiseren van het project stelt u ook in staat om projectdetails zoals Auteur en Licentie te definiëren en de autoload-functionaliteit van Composer te gebruiken. U kunt nu afhankelijkheden definiëren of ze later toevoegen.

Maak een projectmap aan en initialiseer Composer:

cd ~
mkdir example-project
cd example-project
composer init

Het uitvoeren van dit commando zal de setupwizard starten. Details die je in de wizard invoert, kunnen later worden bijgewerkt, dus je kunt gerust de standaardinstellingen laten en gewoon op ENTER drukken. Als je nog niet klaar bent om afhankelijkheden te installeren, kun je nee kiezen. Vul je gegevens in bij elke prompt:

                                            
  Welcome to the Composer config generator  
                                            


This command will guide you through creating your composer.json config.

Package name (<vendor>/<name>) [sammy/example-project]:  sammy/project1
Description []:
Author [n to skip]: Sammy <sammy@linux-console.net>
Minimum Stability []: 
Package Type (e.g. library, project, metapackage, composer-plugin) []: project
License []: 

Define your dependencies.

Would you like to define your dependencies (require) interactively [yes]? no
Would you like to define your dev dependencies (require-dev) interactively [yes]? no

Add PSR-4 autoload mapping? Maps namespace "Sammy\Project1" to the entered relative path. [src/, n to skip]: n

{
    "name": "sammy/project1",
    "type": "project",
    "authors": [
        {
            "name": "Sammy",
            "email": "sammy@linux-console.net"
        }
    ],
    "require": {}
}

Do you confirm generation [yes]? yes

Voordat je de generatie bevestigt, zie je een voorbeeld van het composer.json-bestand dat de wizard zal aanmaken. Als alles er goed uitziet, kun je de standaardoptie ja bevestigen. Als je opnieuw wilt beginnen, kies je nee.

De eerste keer dat je een afhankelijkheid definieert, zal Composer een vendor-map aanmaken. Alle afhankelijkheden worden in deze vendor-map geïnstalleerd. Composer maakt ook een composer.lock-bestand aan. Dit bestand specificeert de exacte versie van elke afhankelijkheid en sub-afhankelijkheid die in je project wordt gebruikt. Dit zorgt ervoor dat elke machine waarop je programma wordt uitgevoerd, exact dezelfde versie van elk pakket gebruikt.

Opmerking: De vendor map mag nooit worden gecommit naar je versiebeheersysteem (VCS). De vendor map bevat alleen pakketten die je van andere leveranciers hebt geïnstalleerd. Die individuele leveranciers onderhouden hun eigen code in hun eigen versiebeheersystemen. Je zou alleen de code die je zelf schrijft moeten bijhouden. In plaats van de vendor map te commiten, hoef je alleen je composer.json en composer.lock bestanden te committen. Je kunt meer leren over het negeren van specifieke bestanden in Hoe Gebruik Je Git: Een Referentiegids.

Nu je PHP hebt geïnstalleerd en een manier hebt om je projectafhankelijkheden te beheren met Composer, ben je klaar om je omgeving te testen.

Stap 7 — Het testen van de PHP-omgeving

Maak en voer een basis PHP-script uit om uw installatie te testen:

nano hello.php

Voeg de volgende PHP-code toe:

<?php
echo 'Hello World!';
?>

Sla het bestand op en sluit het (druk op CTRL+X, daarna Y en vervolgens ENTER). Voer het script uit:

php hello.php

Als de PHP correct wordt verwerkt, zie je alleen de tekens binnen de aanhalingstekens:

Hello World!

PHP heeft het script succesvol verwerkt, wat betekent dat je PHP-omgeving succesvol is geïnstalleerd en dat je klaar bent om je programmeeravontuur voort te zetten.

Stap 8 — Realistische PHP-projecten opzetten

Moderne PHP-frameworks zoals Laravel, Symfony en WordPress vereisen specifieke PHP-extensies en Composer. Installeer het framework met Composer of de installer van het framework en configureer vervolgens je webserver om naar de publieke map van het project te verwijzen.

Laravel installeren

Installeer Laravel met Composer:

composer create-project laravel/laravel my-laravel-app
cd my-laravel-app

Dit commando downloadt Laravel en al zijn afhankelijkheden. Het proces kan een paar minuten duren.

Laravel vereist deze PHP-extensies (geïnstalleerd in Stap 1):

  • php8.1-mbstring - Afhandeling van multibyte-strings
  • php8.1-xml - XML-parsering
  • php8.1-curl - HTTP-verzoeken
  • php8.1-zip - Archiefverwerking
  • php8.1-bcmath - Wiskunde met willekeurige precisie

Als Laravel zegt “mbstring ontbreekt” terwijl je het toch hebt geïnstalleerd:

Dit betekent meestal dat de extensie is geïnstalleerd maar niet geladen. Controleer:

  1. Controleer of de extensie is geïnstalleerd:
php -m | grep mbstring
  1. Als het ontbreekt, installeer het dan:
sudo apt install php8.1-mbstring
  1. Als het is geïnstalleerd maar niet wordt weergegeven, start dan je webserver opnieuw:
# For Apache
sudo systemctl restart apache2

# For PHP-FPM
sudo systemctl restart php8.1-fpm
  1. Controleer welk php.ini-bestand wordt gebruikt. De installer van Laravel gebruikt CLI PHP, dus controleer:
php --ini

Zorg ervoor dat de extensie is ingeschakeld in het CLI php.ini-bestand.

Laravel-installatie verifiëren:

Start na voltooiing van de installatie de ontwikkelserver van Laravel:

php artisan serve

Je zou moeten zien:

INFO  Server running on [http://127.0.0.1:8000]

Bezoek http://localhost:8000 in je browser. Je zou de welkomstpagina van Laravel moeten zien.

Voor productielike omgevingen met Apache of Nginx:

Stel je webserver zo in dat deze naar de public-map verwijst (niet naar de hoofdmap van het project). Laravel’s public/index.php is het toegangspunt voor alle verzoeken.

Opmerking: Leer meer over Laravel in onze tutorial over Hoe Laravel op Ubuntu te installeren.

WordPress installeren

Download en pak WordPress uit:

cd /var/www
sudo wget https://wordpress.org/latest.tar.gz
sudo tar -xzf latest.tar.gz
sudo chown -R www-data:www-data /var/www/wordpress

WordPress vereist een MySQL- of MariaDB-database. Installeer MySQL indien nodig:

sudo apt install mysql-server
sudo mysql_secure_installation

Het mysql_secure_installation script zal je vragen om:

  • Stel een root-wachtwoord in
  • Verwijder anonieme gebruikers
  • Verbied root-login op afstand
  • Verwijder testdatabase
  • Herlaad bevoegdheidstabellen

Maak een database en gebruiker voor WordPress:

sudo mysql -u root -p

In de MySQL-prompt:

CREATE DATABASE wordpress_db;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Vervang secure_password door een sterk wachtwoord. WordPress zal deze gegevens gebruiken om verbinding te maken met de database.

Als WordPress geen verbinding kan maken met de database:

  1. Controleer of MySQL draait:
sudo systemctl status mysql
  1. Test de databaseverbinding:
mysql -u wpuser -p wordpress_db

Als dit niet lukt, controleer:

  • De gebruikersnaam en het wachtwoord zijn correct
  • De database bestaat: SHOW DATABASES;
  • De gebruiker heeft machtigingen: SHOW GRANTS FOR 'wpuser'@'localhost';
  1. Controleer of de MySQL-extensie van PHP is geïnstalleerd:
php -m | grep mysql

Als het ontbreekt, installeer het dan:

sudo apt install php8.1-mysql
sudo systemctl restart apache2  # or php8.1-fpm for Nginx

WordPress-installatie voltooien:

Configureer uw webserver zodat deze naar /var/www/wordpress wijst (zie Stap 2 voor Apache of Stap 3 voor Nginx). Bezoek de site in uw browser. WordPress zal u vragen om:

  1. Selecteer uw taal
  2. Voer de databasegegevens in (gebruik de database, gebruikersnaam en het wachtwoord die u hebt aangemaakt)
  3. Voltooi de installatie

Opmerking: Voor een gedetailleerde WordPress-installatie, zie Hoe WordPress te installeren met LAMP op Ubuntu.

Symfony installeren

Installeer Symfony met Composer:

composer create-project symfony/website-skeleton my-symfony-app
cd my-symfony-app

Symfony vereist dezelfde extensies als Laravel. Start de ontwikkelserver:

symfony server:start

Of gebruik de ingebouwde server van PHP:

php -S localhost:8000 -t public

Als de Symfony-installatie mislukt door extensiefouten:

Controleer of alle vereiste extensies zijn geïnstalleerd en geladen:

php -m | grep -E 'mbstring|xml|curl|zip|bcmath'

Als er iets ontbreekt, installeer dit dan en start uw webserver opnieuw op.

Stap 9 — Beste praktijken voor lokale ontwikkeling

Beveilig je lokale omgeving, gebruik versiebeheer, configureer de juiste bestandspermissies en stel omgeving-specifieke configuraties in. Deze praktijken voorkomen beveiligingsproblemen en maken ontwikkeling soepeler.

Beveiligingsoverwegingen

Zelfs bij lokale ontwikkeling, volg de beste beveiligingspraktijken:

  1. Schakel gevaarlijke PHP-functies uit in productie: Functies zoals exec(), system() en shell_exec() moeten worden beperkt in productie php.ini-bestanden.

  2. Gebruik omgevingsvariabelen: Sla gevoelige configuratie op in .env-bestanden (commit deze nooit naar versiebeheer). Laravel en Symfony ondersteunen dit standaard.

  3. Stel de juiste bestandsrechten in: Bestanden van de webserver moeten leesbaar zijn voor de webservergebruiker, maar niet beschrijfbaar:

sudo chown -R www-data:www-data /var/www/your-project
sudo find /var/www/your-project -type d -exec chmod 755 {} \;
sudo find /var/www/your-project -type f -exec chmod 644 {} \;

Waarom deze machtigingen belangrijk zijn: Mappen hebben 755 nodig (lezen, schrijven, uitvoeren voor de eigenaar; lezen en uitvoeren voor anderen) zodat de webserver ze kan doorlopen. Bestanden hebben 644 nodig (lezen en schrijven voor de eigenaar; alleen lezen voor anderen) zodat de webserver ze kan lezen maar niet kan wijzigen. Dit voorkomt dat kwaadaardige scripts je bestanden overschrijven.

Versiebeheerintegratie

Gebruik altijd versiebeheer voor je PHP-projecten. Initialiseer Git in je projectmap:

cd /var/www/your-project
git init

Maak een .gitignore-bestand om onnodige bestanden uit te sluiten:

/vendor/
/node_modules/
.env
.DS_Store
*.log

Prestatieoptimalisatie

Voor betere prestaties bij lokale ontwikkeling:

  • OPcache inschakelen: OPcache is inbegrepen bij PHP 8.1 en verbetert de prestaties door gecompileerde PHP-code in het cachegeheugen op te slaan.

  • Gebruik de autoloader-optimalisatie van Composer:

composer install --optimize-autoloader --no-dev
  • Configureer PHP-FPM-pools voor een beter beheer van middelen bij gebruik van Nginx.

Stap 10 — Problemen oplossen van veelvoorkomende kwesties

Veelvoorkomende PHP-installatieproblemen zijn onder andere ontbrekende extensies, verkeerde bestandsrechten, fouten in de configuratie van de webserver en conflicten tussen versies. De meeste problemen kunnen worden opgelost door te controleren of extensies correct zijn geïnstalleerd, de bestandsrechten te verifiëren en de logbestanden van de webserver te bekijken.

PHP-extensies laden niet

Als php -m een extensie die je net hebt geïnstalleerd niet laat zien:

  • Controleer of het daadwerkelijk is geïnstalleerd:
dpkg -l | grep php8.1-extension_name
  • Controleer of het extensiebestand bestaat:
ls /usr/lib/php/*/extension_name.so
  • Verifieer of het is ingeschakeld in php.ini. Sommige extensies moeten expliciet worden ingeschakeld:
grep -i extension_name /etc/php/8.1/*/php.ini
  • Start uw webserver opnieuw:
# For Apache
sudo systemctl restart apache2

# For PHP-FPM
sudo systemctl restart php8.1-fpm
  • Controleer welke php.ini wordt gebruikt:
php --ini

Zorg ervoor dat je het juiste php.ini-bestand controleert (CLI versus webserver).

Als de extensie nog steeds niet verschijnt:

  • Sommige extensies vereisen aanvullende systeembibliotheken. Raadpleeg de documentatie van de extensie
  • Controleer of je de juiste versie hebt geïnstalleerd (php8.1-extensie, niet php8.0-extensie)
  • Controleer op conflicterende PHP-versies die mogelijk storen

500 Interne Serverfout

Een 500-fout betekent dat de server een fout is tegengekomen, maar de details niet kan tonen. Controleer de foutlogboeken:

# Apache
sudo tail -20 /var/log/apache2/error.log

# Nginx
sudo tail -20 /var/log/nginx/error.log

# PHP-FPM
sudo tail -20 /var/log/php8.1-fpm.log

Veelvoorkomende oorzaken en oplossingen:

  1. Onjuiste bestandspermissies: PHP-bestanden moeten leesbaar zijn voor de webservergebruiker
sudo chown -R www-data:www-data /var/www/your-project
sudo find /var/www/your-project -type f -exec chmod 644 {} \;
sudo find /var/www/your-project -type d -exec chmod 755 {} \;
  1. Ontbrekende PHP-extensies: Controleer het foutlogboek op berichten zoals „Oproep naar ongedefinieerde functie”. Installeer de ontbrekende extensie en herstart de webserver.

  2. Syntaxfouten in PHP-bestanden: Het foutlogbestand toont het bestand en het regelnummer. Veelvoorkomende problemen:

    • Ontbrekende puntkomma's
    • Niet afgesloten haakjes of aanhalingstekens
    • Het gebruik van niet-gedefinieerde functies of klassen
  3. Onjuiste webserverconfiguratie:

    • Apache: Controleer virtuele hostconfiguratie, moduleladen
    • Nginx: Controleer het PHP-FPM socketpad, FastCGI-configuratie
  4. PHP-geheugenlimiet overschreden: Verhoog memory_limit in php.ini als je de foutmeldingen “Toegestane geheugenlimiet overschreden” ziet

PHP-versieconflicten

Als php -v een andere versie laat zien dan verwacht, heb je meerdere PHP-versies geïnstalleerd.

Controleer welke versies zijn geïnstalleerd:

dpkg -l | grep php | grep -E 'php[0-9]'

Gebruik expliciet de juiste versie:

php8.1 -v
php8.1 -m

Werk uw webserver bij om PHP 8.1 te gebruiken:

Voor Apache, schakel andere PHP-modules uit en schakel PHP 8.1 in:

sudo a2dismod php7.4 php8.0  # if they exist
sudo a2enmod php8.1
sudo systemctl restart apache2

Voor PHP-FPM, stop andere versies en start PHP 8.1:

sudo systemctl stop php7.4-fpm php8.0-fpm  # if they exist
sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm

Stel PHP 8.1 in als de standaard CLI-versie:

sudo update-alternatives --set php /usr/bin/php8.1

Geheugenproblemen bij Composer

Als Composer geen geheugen meer heeft, zie je een fout zoals:

Fatal error: Allowed memory size of 134217728 bytes exhausted

Los het op door Composer uit te voeren met meer geheugen:

php -d memory_limit=512M /usr/local/bin/composer install

Of verhoog de geheugenlimiet van PHP in php.ini:

memory_limit = 512M

Als de installatie van Composer mislukt door een hash-ongelijkheid:

De hash-verificatie kan mislukken als:

  • De installer is bijgewerkt sinds je deze hebt gedownload (download opnieuw om de nieuwste hash te krijgen)
  • Uw download is beschadigd (probeer het opnieuw te downloaden)
  • Je zit achter een proxy die bestanden wijzigt (controleer je netwerkinstellingen)

Database verbindingsproblemen

Als uw PHP-toepassing geen verbinding kan maken met MySQL/MariaDB, kunt u fouten zien zoals:

SQLSTATE[HY000] [2002] No such file or directory

of

Access denied for user 'username'@'localhost'

Stappen voor probleemoplossing:

  1. Controleer of de databaseservice actief is:
sudo systemctl status mysql

Als het niet draait, start het dan:

sudo systemctl start mysql
sudo systemctl enable mysql
  1. Controleer of de MySQL-extensie van PHP is geïnstalleerd:
php -m | grep mysql

Als het ontbreekt, installeer het dan:

sudo apt install php8.1-mysql
sudo systemctl restart apache2  # or php8.1-fpm for Nginx
  1. Controleer de databasegegevens en -machtigingen. Test de verbinding:
mysql -u username -p database_name

Als dit niet lukt, controleer:

  • De gebruikersnaam en het wachtwoord zijn correct
  • De database bestaat: SHOW DATABASES;
  • De gebruiker heeft de volgende rechten: SHOW GRANTS FOR 'username'@'localhost';

Opmerking: Voor het instellen van MySQL, zie Hoe MySQL te installeren op Ubuntu.

PHP-bestand wordt als gewone tekst weergegeven in plaats van uitgevoerd

Als je PHP-bestand als gewone tekst in de browser wordt weergegeven:

  1. Controleer de bestandsextensie: Het moet .php zijn, niet .txt of .html

  2. Controleer of PHP bestanden verwerkt:

    • Apache: Controleer of mod_php is ingeschakeld: apache2ctl -M | grep php
    • Nginx: Controleer of PHP-FPM actief is en of het socketpad correct is
  3. Controleer bestandsrechten: De webserver moet het bestand kunnen lezen

  4. Controleer of het bestand PHP-code bevat: Zorg ervoor dat het begint met <?php of <?

  5. Controleer de webserverconfiguratie:

    • Apache: Virtuele host is mogelijk niet correct geconfigureerd
    • Nginx: Het location ~ \.php$-blok kan ontbreken of onjuist zijn

Problemen met het uploaden van bestanden

Als het uploaden van bestanden mislukt, kunt u fouten zien zoals:

The uploaded file exceeds the upload_max_filesize directive

Controleer deze php.ini-instellingen:

upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300

Belangrijk: post_max_size moet groter zijn dan upload_max_filesize. Als je upload_max_filesize=100M instelt, stel dan post_max_size=110M of hoger in.

Als uploads nog steeds mislukken:

  1. Controleer het foutlogboek op specifieke foutmeldingen
  2. Controleer of de uploadmap bestaat en beschrijfbaar is:
sudo chmod 755 /path/to/upload/directory
sudo chown www-data:www-data /path/to/upload/directory
  1. Controleer schijfruimte: df -h
  2. Controleer of het formulier enctype="multipart/form-data" gebruikt

Start je webserver opnieuw op nadat je wijzigingen in php.ini hebt aangebracht.

Veelgestelde vragen

Hoe installeer ik PHP 8.1 op Ubuntu?

Installeer PHP 8.1 met de pakketbeheerder van Ubuntu: sudo apt update && sudo apt install php8.1. PHP 8.1 is beschikbaar in de standaardrepositories van Ubuntu, dus er zijn geen extra pakketbronnen nodig.

Welke PHP-extensies zijn essentieel voor ontwikkeling?

Essentiële extensies zijn onder andere php8.1-cli, php8.1-mysql, php8.1-curl, php8.1-xml, php8.1-mbstring, php8.1-zip, php8.1-gd en php8.1-bcmath. Deze dekken databaseconnectiviteit, HTTP-verzoeken, stringverwerking en beeldverwerking.

Hoe configureer ik PHP met Apache of Nginx?

Voor Apache, installeer libapache2-mod-php8.1 en schakel het in met sudo a2enmod php8.1. Voor Nginx, installeer php8.1-fpm en configureer Nginx om PHP-verzoeken door te geven aan de PHP-FPM-socket via FastCGI.

Hoe kan ik controleren of PHP correct is geïnstalleerd?

Voer php -v uit om de PHP-versie te controleren. Maak een testbestand met <?php phpinfo(); ?> en open het via je webserver om gedetailleerde PHP-configuratie-informatie te zien.

Kan ik Laravel of WordPress lokaal draaien met deze setup?

Ja. Laravel vereist Composer en de standaard PHP-extensies die hierboven zijn genoemd. WordPress heeft naast PHP ook een MySQL-database nodig. Beide frameworks werken met zowel Apache- als Nginx-configuraties.

Hoe installeer ik Composer voor PHP-projecten?

Download de Composer-installer, controleer de hash en installeer deze wereldwijd: sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer. Controleer met composer --version.

Hoe los ik problemen op met ontbrekende PHP-extensies?

Controleer geïnstalleerde extensies met php -m. Installeer ontbrekende extensies met sudo apt install php8.1-naam_van_extensie en herstart vervolgens je webserver.

Hoe configureer ik PHP-foutmeldingen voor ontwikkeling?

Bewerk php.ini en stel display_errors=On, error_reporting=E_ALL en log_errors=On in. Vergeet niet om foutweergave uit te schakelen in productieomgevingen.

Wat is het verschil tussen Apache en Nginx voor PHP?

Apache gebruikt mod_php om PHP direct te verwerken (PHP is ingebouwd in het proces van Apache), terwijl Nginx PHP-FPM (FastCGI Process Manager) nodig heeft om PHP-verzoeken af te handelen (PHP draait als een aparte service). Zie de sectie “Kiezen tussen Apache en Nginx” hierboven voor een gedetailleerde vergelijkingstabel. Beide benaderingen werken goed; kies op basis van je prestatiebehoeften, vertrouwdheid en bestaande infrastructuur.

Kan ik meerdere PHP-versies op hetzelfde systeem installeren?

Ja, door tools zoals phpenv of phpbrew te gebruiken. Voor de meeste ontwikkelingsscenario's is echter één PHP-versie voldoende. Gebruik versiebeheerders wanneer je applicaties tegen verschillende PHP-versies moet testen.

Conclusie

Je hebt nu een volledig geconfigureerde PHP 8.1-ontwikkelomgeving op Ubuntu met ondersteuning voor zowel Apache- als Nginx-webservers. Je setup bevat essentiële PHP-extensies, Composer voor afhankelijkheidsbeheer en de juiste configuratie voor lokale ontwikkeling.

Voordat je aan je volgende project begint, overweeg om een Geïntegreerde Ontwikkelomgeving (IDE) zoals VS Code in te stellen met PHP-extensies voor syntaxisaccentuering, debuggen en IntelliSense-ondersteuning.

Met je omgeving klaar kun je PHP-ontwikkeling verder verkennen:

  • Leer de basisprincipes van PHP met Hoe je met strings werkt in PHP
  • APIs bouwen met How To Use Web APIs in PHP
  • Begrijp functies in Hoe functies te gebruiken in PHP
  • Databases opzetten met Hoe PostgreSQL te installeren en gebruiken op Ubuntu

Voor productie-implementaties kunt u overwegen om Linux-Console.net App Platform te gebruiken om uw PHP-toepassingen rechtstreeks vanaf GitHub te implementeren met automatische schaalverdeling en SSL-certificaten.

Bedankt dat je samen met de Linux-Console.net-community hebt geleerd.