Ga naar inhoud

PHP Handleiding op Ubuntu Server (via de Console)

Introductie tot PHP (CLI)

In deze handleiding leer je hoe je php gebruikt op een Linux-systeem via de command-line (CLI).

Het commando php wordt gebruikt om PHP-scripts uit te voeren, de installatie te controleren, configuraties te bekijken en modules te beheren.
Hoewel PHP vooral bekend is van webontwikkeling, is de CLI-versie ook erg handig voor scripting, automatisering en debugging.

PHP wordt vaak gebruikt in combinatie met webservers zoals Apache en Nginx, maar kan ook volledig zelfstandig draaien via de terminal.


Achtergrondinformatie

PHP staat voor "Hypertext Preprocessor".

  • PHP kan draaien via de command-line (CLI) en via webservers (zoals mod_php en PHP-FPM).
  • Met het php commando kun je snel scripts uitvoeren, instellingen controleren en extensies beheren.
  • De CLI is ideaal voor development, cronjobs en testing.
  • In deze handleiding gebruiken we PHP 8.3 als voorbeeld.

PHP Versies

πŸ” Controleer jouw versie

php -v
Voorbeeldoutput
PHP 8.3.6 (cli) (built: Jan 27 2026 03:09:47) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.6, Copyright (c) Zend Technologies
with Zend OPcache v8.3.6, Copyright (c), by Zend Technologies

πŸ“Š Uitgebreid overzicht van PHP versies

Versie Release Status Belangrijkste kenmerken Opmerking
PHP 8.3 2023 βœ… Actief ondersteund Typed class constants, verbeterde performance Nieuwste stabiele versie
PHP 8.2 2022 βœ… Actief ondersteund Readonly classes, null/false types Veel gebruikt in productie
PHP 8.1 2021 πŸ”’ Security fixes Enums, fibers, readonly properties Nog beperkt ondersteund
PHP 8.0 2020 ❌ EOL JIT compiler, union types, attributes Grote breaking changes
PHP 7.4 2019 ❌ EOL Typed properties, arrow functions Laatste 7.x versie
PHP 7.3 2018 ❌ EOL Flexible heredoc/nowdoc
PHP 7.2 2017 ❌ EOL Object type hinting, sodium support
PHP 7.1 2016 ❌ EOL Nullable types, void return type
PHP 7.0 2015 ❌ EOL Scalar types, performance boost Grote upgrade vanaf 5.x
PHP 5.6 2014 ❌ EOL Variadic functions, exponentiation Laatste 5.x versie
PHP 5.5 2013 ❌ EOL Generators, password hashing API
PHP 5.4 2012 ❌ EOL Traits, short array syntax
PHP 5.3 2009 ❌ EOL Namespaces, closures Grote modernisering
PHP 5.2 2006 ❌ EOL JSON support
PHP 5.1 2005 ❌ EOL PDO (database abstraction)
PHP 5.0 2004 ❌ EOL OOP verbeteringen Introductie Zend Engine II
PHP 4.x 2000–2008 ❌ EOL Basis web scripting Verouderd
PHP 3.x 1998–2000 ❌ EOL Eerste brede adoptie
PHP 2.x 1997–1998 ❌ EOL Simpele scripting
PHP 1.x 1995–1997 ❌ EOL Eerste versie Begin van PHP

πŸ“Œ Belangrijke inzichten

  • PHP 8.x brengt grote performance- en type verbeteringen.
  • PHP 7.x was een enorme sprong in snelheid en stabiliteit.
  • PHP 5.x introduceerde moderne programmeerconcepten zoals OOP en namespaces.
  • Oudere versies (<7) worden sterk afgeraden vanwege beveiligingsrisico’s.

πŸš€ Aanbeveling

Gebruik altijd een actief ondersteunde versie:

  • βœ”οΈ Aanbevolen: PHP 8.2 of 8.3
  • ⚠️ Vermijd: Alles onder PHP 8.0

βš™οΈ Installeren en updaten van php

PHP kan worden geΓ―nstalleerd via de standaard pakketmanager op Debian/Ubuntu.


πŸ”Ή Update van pakketlijst en PHP

Voer eerst een update uit om je pakketbronnen te verversen:

sudo apt update
sudo apt upgrade -y

πŸ”Ή Installatie van PHP 8.3 (CLI + common)

sudo apt install php8.3 php8.3-cli php8.3-common
Voorbeeldoutput
php8.3-cli is already the newest version (8.3.0-1ubuntu1).

βš™οΈ php Modules

πŸ”Ή Installeren van veelgebruikte PHP modules

Hieronder een lijst met modules die vaak nodig zijn, inclusief hun install commando:

Module Beschrijving Installatie
php8.3-mysql MySQL database ondersteuning sudo apt install php8.3-mysql
php8.3-pgsql PostgreSQL ondersteuning sudo apt install php8.3-pgsql
php8.3-sqlite3 SQLite ondersteuning sudo apt install php8.3-sqlite3
php8.3-curl cURL ondersteuning voor HTTP requests sudo apt install php8.3-curl
php8.3-gd Beeldbewerking met GD library sudo apt install php8.3-gd
php8.3-mbstring Multibyte string verwerking sudo apt install php8.3-mbstring
php8.3-xml XML parsing sudo apt install php8.3-xml
php8.3-zip ZIP bestand ondersteuning sudo apt install php8.3-zip
php8.3-bcmath Bignum wiskunde functies sudo apt install php8.3-bcmath
php8.3-intl Internationalization functies sudo apt install php8.3-intl
php8.3-soap SOAP webservices sudo apt install php8.3-soap
php8.3-opcache PHP opcode caching sudo apt install php8.3-opcache
php8.3-readline Command-line readline ondersteuning sudo apt install php8.3-readline
php8.3-cli PHP CLI interface sudo apt install php8.3-cli
php8.3-fpm FastCGI process manager (voor Nginx) sudo apt install php8.3-fpm

πŸ”Ή Controleer geΓ―nstalleerde modules

php -m
Voorbeeldoutput
[PHP Modules]
bcmath
calendar
Core
ctype
curl
date
dom
...

πŸ”Ή Extra tip

  • Wil je meerdere modules tegelijk installeren?

    sudo apt install php8.3-{mysql,mbstring,curl,xml,zip,gd,bcmath,intl,soap}
    

  • Gebruik altijd dezelfde PHP-versie voor alle modules (bv. php8.3-*) om conflicten te voorkomen.

Hier vind je de belangrijkste PHP-commando's die je vaak gebruikt in de terminal:

Commando Beschrijving Voorbeeld
php -v Controleert de geΓ―nstalleerde PHP-versie php -v β†’ PHP 8.3.0
man php PHP Handleiding man php β†’ php(1) Scripting Language php (1) NAME
php --ini Toont de actieve php.ini-bestanden en configuratiepaden php --ini
php -m Lijst alle geladen PHP-modules php -m β†’ bcmath, curl, mbstring, mysqli ...
php -i Toont uitgebreide PHP-informatie (zoals phpinfo()) php -i
php -r '<code>' Voer inline PHP-code uit zonder bestand php -r 'echo date("Y-m-d");'
php -a Start interactieve PHP-shell php -a
php script.php Voer een PHP-scriptbestand uit php myscript.php

Tip: Combineer commando's met | less voor beter overzicht:

php -i | less

PHP-configuratie en instellingen

Controleer welke php.ini wordt gebruikt in de CLI met het commando:

php --ini

Voorbeeldoutput:

Configuration File (php.ini) Path: /etc/php/8.3/cli
Loaded Configuration File:         /etc/php/8.3/cli/php.ini
Scan for additional .ini files in: /etc/php/8.3/cli/conf.d
Additional .ini files parsed:      /etc/php/8.3/cli/conf.d/10-mysqlnd.ini,
                                   /etc/php/8.3/cli/conf.d/20-curl.ini

  • Loaded Configuration File β†’ Geeft aan welk php.ini-bestand actief is.
  • Scan for additional .ini files β†’ Extra configuratiebestanden die worden ingeladen.

Controleer de actieve php.ini voor de webserver: 1. Maak een bestand info.php aan in je webroot:

<?php
phpinfo();
?>
2. Open het bestand in je browser: http://jouwdomein/info.php 3. Zoek naar "Loaded Configuration File" β†’ dit is de actieve php.ini. 4. Bekijk ook Additional .ini files parsed voor extra configuratiebestanden.

⚠️ Verwijder of beveilig dit bestand na gebruik, omdat het gevoelige serverinformatie toont.

Hier zijn de belangrijkste php.ini instellingen die je kunt aanpassen:

Sectie Richtlijn / Regel Beschrijving Tips / Aanbevelingen
error_reporting error_reporting = E_ALL Bepaalt welke fouten en waarschuwingen getoond worden Voor development: E_ALL, voor productie: E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors display_errors = On Fouten op het scherm tonen Voor development aan, voor productie uit (beveiliging)
log_errors log_errors = On Fouten loggen naar logfile Altijd aanzetten, vooral productie
error_log error_log = /var/log/php_errors.log Bestand waarin fouten gelogd worden Controleer of PHP schrijfrechten heeft
memory_limit memory_limit = 128M Maximale hoeveelheid geheugen per script Voor zware scripts verhogen, b.v. 512M
upload_max_filesize upload_max_filesize = 2M Maximale grootte voor upload-bestanden Verhogen bij grote uploads, bv. 50M
post_max_size post_max_size = 8M Maximale grootte voor POST-verzoeken Moet groter zijn dan upload_max_filesize
max_execution_time max_execution_time = 30 Maximale uitvoeringstijd per script (seconden) Verhogen bij lange scripts, bv. 120
max_input_time max_input_time = 60 Maximale tijd om input data te verwerken Voor grote POST-verzoeken verhogen
date.timezone date.timezone = Europe/Amsterdam Standaard tijdzone Pas aan naar jouw locatie voor correcte datum/tijd
session.save_path session.save_path = /var/lib/php/sessions Locatie van PHP sessies Controleer schrijfpermissies
date.timezone date.timezone = Europe/Amsterdam Standaard tijdzone Pas aan naar jouw locatie voor correcte datum/tijd
session.save_path session.save_path = /var/lib/php/sessions Locatie van PHP sessies Controleer schrijfpermissies
session.gc_maxlifetime session.gc_maxlifetime = 1440 Bepaalt hoe lang sessies geldig blijven (in seconden) Verhoog voor langere login-sessies, bv. 3600 (1 uur) of 86400 (1 dag)
session.cookie_lifetime session.cookie_lifetime = 0 Hoe lang de sessie-cookie geldig blijft 0 = tot browser sluit, anders in seconden instellen
session.gc_probability / session.gc_divisor session.gc_probability = 1
session.gc_divisor = 100
Bepaalt hoe vaak oude sessies worden opgeruimd Hogere kans = vaker opruimen, maar meer load
opcache.enable opcache.enable = 1 Schakelt opcode caching aan Verbeterde performance voor productie
extension=xyz extension=mbstring etc. Laadt specifieke PHP extensies Zorg dat je extensies geladen zijn zoals curl, pdo_mysql, gd

πŸ”Ή Tips bij aanpassen van php.ini: - Maak altijd een backup voor je wijzigingen:

sudo cp /etc/php/8.3/cli/php.ini /etc/php/8.3/cli/php.ini.backup
- Na wijzigingen altijd de webserver of PHP-FPM herstarten:
sudo systemctl restart apache2
sudo systemctl restart php8.3-fpm
- Gebruik php --ini of phpinfo() om te controleren dat je wijzigingen actief zijn. - Pas niet alle instellingen aan zonder reden; sommige veranderingen kunnen beveiliging of performance beΓ―nvloeden.

Je kunt gevaarlijke of ongebruikte functies in PHP uitschakelen via disable_functions in php.ini.

Voorbeeld:

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

Wat het doet: - exec() / system() / shell_exec() / passthru() β†’ voorkomen dat PHP shell-commando's uitvoert - proc_open() / popen() β†’ voorkomt dat externe processen worden gestart - curl_exec() / curl_multi_exec() β†’ beperkt ongecontroleerde HTTP requests via cURL - parse_ini_file() / show_source() β†’ voorkomen van uitlezen van ini-bestanden of broncode

Na het aanpassen altijd PHP herstarten:

sudo systemctl restart apache2
sudo systemctl restart php8.3-fpm

🧹 PHP verwijderen & resetten

PHP beheer

Wil je PHP volledig verwijderen van je systeem:

sudo apt purge 'php*'
sudo apt autoremove --purge

πŸ” Wat gebeurt hier?

  • purge β†’ verwijdert PHP + configuratiebestanden
  • autoremove β†’ verwijdert ongebruikte afhankelijkheden

⚠️ Let op

  • Alle PHP-versies worden verwijderd
  • Ook configuraties zoals php.ini gaan verloren
  • Webservers kunnen stoppen met werken (Apache/Nginx)

πŸ“ Extra opruimen (optioneel)

sudo rm -rf /etc/php/
sudo rm -rf /var/lib/php/

⚠️ Alleen doen als je echt een schone installatie wilt

Wil je PHP resetten zonder alles te verwijderen:

πŸ”„ Stap 1: Herinstalleer PHP

sudo apt install --reinstall php8.3 php8.3-cli php8.3-common

πŸ”„ Stap 2: Reset configuratiebestanden

sudo cp /usr/lib/php/8.3/php.ini-production /etc/php/8.3/cli/php.ini

Of voor development:

sudo cp /usr/lib/php/8.3/php.ini-development /etc/php/8.3/cli/php.ini

πŸ” Wat is het verschil?

Bestand Gebruik
php.ini-production Veilig, geschikt voor live servers
php.ini-development Meer fouten zichtbaar, handig voor development

πŸ”„ Herstart services

sudo systemctl restart apache2

of

sudo systemctl restart php8.3-fpm

Als je alleen één PHP-versie wilt verwijderen:

sudo apt purge php8.2*
sudo apt autoremove

βœ… Handig voor:

  • Oude versies opruimen
  • Overstappen naar nieuwe PHP-versie
  • Server opschonen

Controleer of PHP nog actief is:

php -v
Voorbeeldoutput
PHP 8.3.0 (cli) (built: ...)

❌ Krijg je een fout zoals:

command not found

➝ PHP is volledig verwijderd

Werk je met meerdere PHP-versies? Dan kun je schakelen tussen versies.

πŸ” Beschikbare versies bekijken

update-alternatives --list php
Voorbeeldoutput
/usr/bin/php8.1
/usr/bin/php8.2
/usr/bin/php8.3

πŸ”„ Standaard PHP-versie instellen

sudo update-alternatives --config php

Kies vervolgens het nummer van de gewenste versie.

βš™οΈ Voor webserver (FPM)

Voor Nginx of PHP-FPM:

sudo systemctl stop php8.2-fpm
sudo systemctl start php8.3-fpm

πŸ”„ Apache module wisselen

sudo a2dismod php8.2
sudo a2enmod php8.3
sudo systemctl restart apache2

βœ… Controleren actieve versie

php -v

πŸ’‘ Handig voor development om snel tussen versies te wisselen