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
phpcommando 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¶
Voorbeeldoutput
π 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:
πΉ Installatie van PHP 8.3 (CLI + common)¶
βοΈ 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¶
πΉ Extra tip¶
-
Wil je meerdere modules tegelijk installeren?
-
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
| lessvoor beter overzicht:
PHP-configuratie en instellingen
Controleer welke php.ini wordt gebruikt in de CLI met het commando:
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:
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 = 1session.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:
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:
π§Ή PHP verwijderen & resetten¶
PHP beheer
Wil je PHP volledig verwijderen van je systeem:
π Wat gebeurt hier?¶
purgeβ verwijdert PHP + configuratiebestandenautoremoveβ verwijdert ongebruikte afhankelijkheden
β οΈ Let op¶
- Alle PHP-versies worden verwijderd
- Ook configuraties zoals
php.inigaan verloren - Webservers kunnen stoppen met werken (Apache/Nginx)
π Extra opruimen (optioneel)¶
β οΈ Alleen doen als je echt een schone installatie wilt
Wil je PHP resetten zonder alles te verwijderen:
π Stap 1: Herinstalleer PHP¶
π Stap 2: Reset configuratiebestanden¶
Of voor development:
π 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¶
of
Als je alleen één PHP-versie wilt verwijderen:
β Handig voor:¶
- Oude versies opruimen
- Overstappen naar nieuwe PHP-versie
- Server opschonen
Controleer of PHP nog actief is:
β Krijg je een fout zoals:
β PHP is volledig verwijderd
Werk je met meerdere PHP-versies? Dan kun je schakelen tussen versies.
π Beschikbare versies bekijken¶
π Standaard PHP-versie instellen¶
Kies vervolgens het nummer van de gewenste versie.
βοΈ Voor webserver (FPM)¶
Voor Nginx of PHP-FPM:
π Apache module wisselen¶
β Controleren actieve versie¶
π‘ Handig voor development om snel tussen versies te wisselen