Hvad er PHP? hvad bruges det til og hvornår?
PHP er det sprog, der gør størstedelen af nettet levende. Det er her, alt det dynamiske sker bag kulissen – login, bestillinger, indholdsstyring, brugerkontoer, API-kald, webshoplogik og hele maskinrummet i systemer som WordPress og WooCommerce. PHP kører på serveren, før noget som helst rammer browseren, og leverer færdigt HTML, der kan vises for brugeren. Forståelse for PHP er derfor ikke bare “nice to have” – det er nøglen til at forstå, hvordan moderne, databasedrevne hjemmesider fungerer, og hvad der skal til for at gøre dem både hurtige, stabile og SEO-venlige.
PHP kort fortalt
Hvis vi skærer alle tekniske detaljer væk, er PHP et scriptingsprog på serversiden, der:
- Modtager en HTTP-forespørgsel (request).
- Henter data i databaser eller andre services.
- Behandler logik (regler, betingelser, beregninger).
- Spytter HTML (eller JSON, XML osv.) ud til browseren.
Du ser aldrig PHP-koden i din browser. Når du højreklikker og vælger “Vis sidekilde”, ser du kun resultatet – ikke selve PHP-skriptet. Det er en vigtig forskel i forhold til for eksempel JavaScript, hvor meget af logikken kører i selve browseren.
PHP står officielt for “PHP: Hypertext Preprocessor”. Det er open source (altså fri kildekode), oprindeligt skabt af Rasmus Lerdorf tilbage i midten af 90’erne, og i dag bruges PHP på størstedelen af alle websites, der har et serversidesprog bag sig – især fordi WordPress, Drupal, Joomla, Magento og mange andre systemer er bygget i PHP.
Historien kort – hvorfor PHP stadig er overalt
PHP startede som nogle små værktøjer til at håndtere personlige sider og formularer. Det voksede hurtigt til et egentligt scriptingsprog, fordi udviklere havde brug for en nem måde at lave dynamiske sider, før JavaScript og frontend-frameworks blev hverdag.
Der er flere grunde til, at PHP aldrig er forsvundet:
- Lav indgangsbarriere – enkel syntaks, hurtigt fra idé til prototype.
- Billig hosting – næsten alle webhoteller understøtter PHP out-of-the-box.
- Stort økosystem – WordPress, Laravel, Symfony, Drupal, Magento osv.
- Enorm mængde eksempler og tutorials – nemt at finde løsninger på klassiske problemer.
Selv om der hele tiden kommer nye teknologier (Node.js, Python, Go, JavaScript-frameworks osv.), er PHP stadig rygraden i en stor del af de systemer, folk rent faktisk bruger – ikke mindst WordPress, som driver en massiv del af verdens hjemmesider.
PHP’s fulde historie
PHP blev født ud af et meget praktisk behov – ikke som et stort akademisk projekt, men som et stykke værktøj til hverdagens webproblemer.
I midten af 90’erne havde den dansk-canadiske udvikler Rasmus Lerdorf brug for en nem måde at spore besøgende på sin personlige hjemmeside. Han skrev derfor nogle små CGI-scripts (Common Gateway Interface – den daværende standard til dynamisk indhold) i C, som han kaldte “Personal Home Page Tools”. Herfra kommer den oprindelige betydning af PHP-navnet: Personal Home Page. Kilde: PHP’s egen fortælling
Interessen voksede hurtigt, andre begyndte at bruge og udvide koden, og projektet blev åbnet som open source. PHP udviklede sig fra nogle få scripts til et egentligt sprog, der kunne ligge tæt sammen med HTML og gøre det nemt at lave dynamiske sider uden at skrive C-kode eller kompilere noget.
Da sproget blev mere avanceret, ændrede man den officielle betydning af navnet til “PHP: Hypertext Preprocessor” – et såkaldt rekursivt akronym, hvor første bogstav henviser til navnet selv. Det signalerede bedre, hvad sproget bruges til: at forbehandle (preprocess) hypertekst, før den sendes videre til browseren som færdigt HTML.
Versionshistorie i grove træk
Der har været mange mindre versioner, men nogle hovedspring er vigtige at kende:
- PHP/FI og PHP 3 (slut 90’erne)
De første generationer udviklede sig fra simple formular-håndteringsscripts til et egentligt scriptingsprog. Her begyndte PHP at ligne det, vi kender i dag – med variabler, funktioner og tæt integration med databaser som MySQL. - PHP 4 (ca. 2000)
Introducerede en mere moden motor og bedre objektorienterede muligheder, men stadig med en del begrænsninger. PHP 4 var i mange år “standarden” på shared hosting og gjorde sproget ekstremt udbredt, fordi det var nemt at installere og køre. - PHP 5 (fra 2004)
Var et kæmpe spring for seriøs udvikling. Objektorientering blev for alvor brugbar, og der kom features som bedre fejlhåndtering, forbedrede extensions og et fundament, som frameworks og større projekter kunne bygge på. Mange CMS’er og systemer, der stadig lever i dag, er oprindeligt skrevet til PHP 5. - PHP 7 (fra 2015)
Her tog PHP et kvantespring i hastighed og effektivitet. Den nye motor gav ofte 2x–3x performance i forhold til PHP 5 på den samme kode, med lavere hukommelsesforbrug. Det var samtidig et opgør med mange gamle, forældede dele af sproget, der blev fjernet eller ændret. I praksis var det her, PHP for alvor rystede rygtet af sig som “langsomt” og “gammeldags”. - PHP 8 (fra 2020 og frem)
Bygger videre på 7’eren med endnu bedre performance, typer, fejlrapportering og moderne sprogfeatures (som attributes, union types, match-udtryk osv.). PHP 8.x er i dag den version, man bør sigte efter i produktion, både for hastighed, sikkerhed og kompatibilitet med moderne værktøjer og frameworks.
Mellem de store hovedversioner har der været en lang række mindre releases, der primært retter fejl, lukker sikkerhedshuller og finpudser ydelse. De understøttede versioner skifter løbende, så man skal altid holde øje med, hvilke versioner der stadig får sikkerhedsopdateringer.
Hvor og hvordan PHP bliver udviklet i dag
Selv om PHP startede som Rasmus Lerdorfs personlige værktøj, er det i dag et globalt open source-projekt. Udviklingen styres ikke af én virksomhed, men af et community, hvor:
- en række kerne-udviklere har ansvar for koden
- større ændringer sker via formelle forslag (RFC – Request For Comments)
- nye features diskuteres, afstemmes og implementeres i fællesskab
Koden ligger offentligt tilgængelig, og både virksomheder og enkeltpersoner bidrager – enten direkte til sproget eller gennem biblioteker, frameworks og værktøjer.
Geografisk er PHP ikke knyttet til ét land eller én region. Bidrag kommer fra hele verden: Europa, Nordamerika, Asien osv. Det passer godt til den rolle, PHP har fået som praktisk arbejds-sprog til alt fra små hjemmesider til store platforme.
Fra hobbyværktøj til infrastruktur
Det interessante ved PHP’s historie er, hvor “ufriseret” den startede – og hvor vigtig den er endt med at blive:
- Det begyndte som nogle simple scripts til én mands hjemmeside.
- Det voksede til et sprog, som webhoteller over hele verden tilbød som standard.
- Oven på sproget blev der bygget CMS’er som WordPress, Drupal og Joomla, der igen blev fundament for hundredtusindvis af virksomheder, webshops og blogs.
- Frameworks som Laravel og Symfony har gjort det muligt at bygge komplekse systemer med samme sprog, uden at opfinde hjulene igen hver gang.
I dag er PHP ikke bare et sprog – det er en del af selve infrastrukturen på nettet. En stor del af de sider og systemer, almindelige brugere interagerer med, er drevet af PHP i baggrunden, uanset om de ved det eller ej.
Hvordan PHP fungerer teknisk
Fra URL til HTML
Når en bruger skriver en adresse i browseren, sker der typisk noget i denne stil:
- Browseren sender en HTTP-forespørgsel til serveren.
- Webserveren (ofte Apache eller Nginx) modtager den.
- Hvis URL’en peger på en PHP-fil (eller er routet dertil), sendes forespørgslen videre til PHP-motoren – ofte via PHP-FPM (FastCGI Process Manager).
- PHP kører koden, henter eventuelt data i en database (typisk MySQL eller MariaDB), og bygger et HTML-resultat.
- Webserveren sender det færdige HTML tilbage til browseren.
Brugeren ser kun HTML, CSS og JavaScript – men alt beslutningsarbejdet kan være sket i PHP.
PHP og databaser
PHP er tæt knyttet til databaser. Det klassiske makkerpar er PHP + MySQL, men moderne PHP-applikationer kan lige så fint tale med PostgreSQL, SQLite eller andre database-systemer.
Et typisk flow kunne være:
- PHP modtager en formular (for eksempel login).
- PHP kører en SQL-forespørgsel (Structured Query Language – databasesprog).
- Resultatet bruges til at bestemme, om brugeren skal logges ind, se en fejl, eller måske omdirigeres til en anden side.
Hvor bruges PHP i dag?
PHP er ikke kun “det der WordPress-sprog”. I praksis bruges det til:
- CMS (Content Management System – indholdsstyring)
WordPress, Drupal, Joomla m.fl. - Webshops
WooCommerce, Magento, PrestaShop osv. - Frameworks og specialudviklede systemer
Laravel, Symfony og forskellige in-house systemer. - API’er og microservices
PHP kan sagtens køre rene JSON-API’er uden HTML. - CLI-scripts (Command Line Interface – kommandolinjeværktøjer)
Cronjobs, import/eksport, kø-systemer, batchopgaver.
I praksis betyder det, at hvis du arbejder seriøst med web i dag – og især med WordPress, WooCommerce og lignende – så er du direkte afhængig af PHP, uanset om du har set koden eller ej.
PHP-syntaks i praksis
Selve sproget ligner en blanding af C, JavaScript og lidt egen logik. Koden ligger typisk i filer med .php, og blokken markeres med <?php ... ?>.
Et helt simpelt eksempel
<?php
$navn = 'Kim';
echo 'Hej ' . $navn . ', velkommen til PHP!';Som udskriver: Hej Kim velkommen til PHP!
$navner en variabel (en navngivet beholder til data).echosender tekst videre til output – altså det, der ender i HTML’en.
Betingelser og løkker
PHP har de klassiske byggesten:
<?php
$timer = 3;
if ($timer < 5) {
echo 'Abonnementet er stadig aktivt.';
} else {
echo 'Abonnementet er udløbet.';
}Og løkker (loops):
<?php
$produkter = ['Bronze', 'Sølv', 'Guld'];
foreach ($produkter as $produkt) {
echo '<li>' . $produkt . '</li>';
}Her ville PHP generere en række <li>-elementer, som browseren bare ser som helt almindelig HTML.
Et praktisk eksempel med formular
Forestil dig en simpel kontaktformular, hvor PHP håndterer indsendelsen:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$navn = trim($_POST['navn'] ?? '');
$email = trim($_POST['email'] ?? '');
$besked = trim($_POST['besked'] ?? '');
if ($navn !== '' && filter_var($email, FILTER_VALIDATE_EMAIL)) {
// Her kunne du sende mail eller gemme i database
echo 'Tak for din besked, ' . htmlspecialchars($navn, ENT_QUOTES, 'UTF-8');
} else {
echo 'Tjek venligst dine oplysninger.';
}
}Her bruger PHP blandt andet:
$_POST– superglobal variabel med formular-input.filter_var(..., FILTER_VALIDATE_EMAIL)– simpel validering af e-mail.htmlspecialchars()– sikrer, at der ikke injiceres HTML/JavaScript (XSS-beskyttelse).
PHP sammen med HTML, CSS og JavaScript
PHP er ikke en erstatning for HTML, CSS og JavaScript – det er limen, der binder det dynamiske sammen.
- HTML beskriver strukturen.
- CSS styrer designet.
- JavaScript håndterer interaktion i browseren.
- PHP genererer indhold, snakker med databaser og beslutter, hvad der overhovedet skal sendes til browseren.
En klassisk fejl hos begyndere er at blande alt for meget PHP direkte ind midt i HTML’en uden struktur. Det fungerer teknisk, men det bliver hurtigt svært at vedligeholde, debugge og optimere. Når man vil arbejde seriøst med hastighed, caching og teknisk SEO, er separation mellem logik (PHP) og præsentation (HTML/CSS) en stor fordel – det spiller også direkte ind i emner som HTML-cache og klassisk output-cache.
Her giver det god mening at læse videre på en side som “Hvad er HTML-cache”, hvis du vil forstå, hvordan PHP og cache hænger sammen i praksis.
PHP og WordPress – den typiske virkelighed
For rigtigt mange er første møde med PHP lig med WordPress. Hele WordPress-kernen, temaer og plugins er skrevet i PHP, og når du ændrer tema, tilføjer et hook, skriver et plugin eller laver en functions.php-tilpasning, så arbejder du i PHP.
Et lille eksempel på en WordPress-filter-funktion i PHP:
<?php
add_filter('the_title', 'ktz_tilfoej_ikon_til_titel');
function ktz_tilfoej_ikon_til_titel($titel) {
if (is_singular('post')) {
$titel .= ' ✦';
}
return $titel;
}Her:
add_filter()binder din funktion på en hook.is_singular()(WordPress-funktion) tjekker, om vi er på et enkelt indlæg.- Funktionen ændrer titlen, før den bliver vist.
Hvis du arbejder seriøst med WordPress, bliver kendskab til PHP hurtigt forskellen på “jeg kan konfigurere” og “jeg kan udvikle og løse rigtige problemer”.
Det er også her, ting som redirects, canonical-tags, speciallogik for WooCommerce, medlemskaber, hastighedsoptimering og custom integrationer typisk ender – og alt sammen ligger i PHP-filer. Emner som “Redirect-guiden – PHP, vhost og .htaccess” hænger tæt sammen med netop den del.
PHP og performance – hvad gør sproget hurtigt eller langsomt?
PHP i sig selv er ikke “langsomt” – det er måden, det bliver brugt på. Moderne PHP-versioner (7.x og 8.x) er markant hurtigere end de gamle 5.x-versioner, både på rå hastighed og hukommelsesforbrug.
Der er nogle klare byggesten i en hurtig PHP-opsætning:
1. Den rigtige PHP-version
- Kør altid på en understøttet version (PHP 8.x) – både for hastighed og sikkerhed.
- Ældre versioner mangler ikke bare performance, men får heller ikke sikkerhedsopdateringer.
2. OPcache og opcode-cache
PHP-kode bliver fortolket, hver gang den køres. Med OPcache (opcode cache – en del af PHP) kan serveren gemme den oversatte bytekode i hukommelsen, så man undgår at fortolke den samme fil for hver request. Resultatet er markant lavere CPU-forbrug og hurtigere svar.
Nogle nøgler:
- OPcache skal være slået til i php.ini.
- Der skal være nok hukommelse til cachen.
- På travle sites kan det betale sig at finjustere OPcache-parametre og php-fpm-procesindstillinger.
3. PHP-FPM-konfiguration
PHP-FPM styrer, hvor mange PHP-processer der kører, hvordan de genbruges, og hvordan belastningen fordeles. Forkerte indstillinger kan give:
- For få processer → køer og lange svartider.
- For mange processer → alt RAM bliver brugt, serveren begynder at swappe og blive ustabil.
Tuning af PHP-FPM handler om at kende trafikmønsteret, CPU/RAM-ressourcer og hvor tunge dine scripts og databaseforespørgsler er.
4. Databasen – det skjulte flaskehals-problem
Ofte er det ikke PHP, men databasen, der er langsom:
- Ineffektive queries.
- Manglende indeks.
- For meget logik lagt i databasen.
- Plugins, der laver unødige kald.
PHP bliver så “syndebuk”, selv om problemet er MySQL/MariaDB eller den måde, data bliver hentet på. Typisk løses det med:
- Optimerede SQL-queries.
- Ryddet op i plugins og features.
- Cache-lag (for eksempel HTML-cache eller objekt-cache).
PHP og SEO – hvad betyder sproget for synlighed?
Selve sproget PHP er ikke en direkte rankingfaktor. Google er fuldstændig ligeglad med, om HTML’en er genereret med PHP, Python, Node.js eller håndskrevet – det, der betyder noget, er:
- Hastighed og stabilitet
God PHP-opsætning, cache og fornuftig kode betyder lav TTFB (Time To First Byte – tid til første byte) og hurtigere sider. - Ren HTML-struktur
PHP skal producere HTML med korrekt semantik, metatags, structured data osv. - Kanoniske URL’er, redirects og URL-struktur
Alt det tekniske SEO-arbejde med 301-redirects, hreflang, canonical osv. implementeres typisk i PHP eller via PHP-baserede plugins. - Dynamisk indhold, der stadig kan crawles
Fordi PHP genererer HTML på serversiden, får søgemaskinerne et færdigt dokument – det er en fordel i forhold til tunge frontend-løsninger, der kræver JavaScript-rendering.
Hvis man vil arbejde målrettet med teknisk SEO på PHP-sites, er emner som:
- Metatags (se fx “Hvad er metatags”).
- Robots-styring (se “Hvad er robots.txt”).
- Redirect-strategier (se “Redirect-guiden – PHP, vhost og .htaccess”).
- HTML-cache og server-cache (“Hvad er HTML-cache”).
alt sammen dybt forbundet med den måde, PHP-koden er skrevet på.
Typiske faldgruber i PHP-kode
PHP får ofte skylden for ting, der i virkeligheden handler om, hvordan udviklere har brugt sproget. Nogle klassiske mønstre:
“Spaghetti-kode”
Når PHP og HTML er blandet vilkårligt, uden klare funktioner, klasser eller skabeloner:
- Svært at læse.
- Svært at teste.
- Næsten umuligt at optimere.
Løsningen er struktur: funktioner, klasser, templates og frameworks eller i det mindste en konsekvent skabelonstruktur.
Global tilstand og “magiske” variabler
Alt kan i princippet tilgå alt – især hvis man misbruger globale variabler. Det giver:
- Overraskende bivirkninger.
- Bugs, der er svære at genskabe.
- Uforudsigelig adfærd ved ændringer.
Modgiften er klare interfaces, dependency injection eller i det mindste tydelige funktioners input og output.
Sikkerhedsproblemer
PHP er ikke i sig selv usikkert – men det er nemt at skrive usikker PHP, hvis man ikke ved, hvad man laver. Typiske fejl:
- SQL injection – når brugerinput sættes direkte ind i SQL uden prepared statements.
- XSS (Cross-Site Scripting – indsættelse af skadelig kode i HTML) – når output ikke escapes korrekt.
- CSRF (Cross-Site Request Forgery) – manglende tokens i formularer.
Modsvaret er:
- Prepared statements og parameteriserede queries.
- Konsekvent brug af
htmlspecialchars()ved output. - CSRF-tokens i formularer.
- Opdaterede frameworks og CMS’er.
Forældede PHP-versioner
Gamle PHP-versioner:
- er langsommere
- mangler sikkerhedsopdateringer
- skaber problemer med moderne plugins og biblioteker
Opdatering af PHP-version er noget af det mest effektive, man kan gøre både for hastighed, sikkerhed og teknisk SEO, hvis man sidder fast på en forældet version.
Hvordan tester og fejlsøger man PHP?
At arbejde professionelt med PHP kræver mere end var_dump() og gæt.
Fejllogs
De fleste servere har en PHP-error-log, hvor fatale fejl, advarsler og notices lander. Her finder man typisk:
- Parse-fejl (manglende semikolon, forkert syntaks).
- Fatal errors (kald til funktioner der ikke findes, typefejl osv.).
- Warnings og notices om ting, der snart bliver et problem.
Det er ofte første sted, man kigger, når en side bare viser “500 Internal Server Error”.
Xdebug og profilering
Xdebug er en PHP-udvidelse, der:
- gør det muligt at debugge linje for linje
- kan generere profileringsdata (hvor bruger koden tid og hukommelse?)
Profilering kan også laves med tjenester som New Relic, Blackfire og lignende værktøjer, som giver overblik over flaskehalse, langsomme queries og dyre PHP-funktioner.
Enheder og integrationstests
I større PHP-projekter (for eksempel Laravel/Symfony eller komplekse WordPress-løsninger) bruges ofte:
- Unit tests – tester små dele af logikken isoleret.
- Integrationstests – tester samspil mellem flere komponenter og databasen.
Det er ikke et krav for at lave PHP, men det er et krav for at lave robust PHP i større projekter.
Hvornår giver PHP mening – og hvornår gør det ikke?
PHP er stærkt, når du skal:
- Bygge eller udvide en WordPress- eller WooCommerce-løsning.
- Lave “klassiske” webapps med serverrenderet HTML.
- Udvikle et CMS, et intranet eller et administrationssystem.
- Levere API’er fra en backend, der også i forvejen er PHP-baseret.
Du kan godt overdrive PHP, fx:
- hvis du prøver at bygge tunge real-time-applikationer, der egentlig passer bedre til WebSockets og Node.js
- hvis alt indhold alligevel skal rendere i et SPA-framework på frontend, og serveren bare skal levere nogle få JSON-endpoints
Det handler ikke om, at PHP “er bedre” eller “værre”, men om at vælge rigtigt værktøj til opgaven. I rigtig mange almindelige webprojekter – især i WordPress-verdenen – er PHP stadig det mest praktiske og økonomisk fornuftige valg.
Hej Kim. Jeg er gået i gang med at seo optimere min køreskole hjemmeside. Jeg synes LS er lidt langsom hvilket jeg også kan se,…
Læs mereHej Albert, Ja, jeg har samarbejdet med Madbanditten i mere end 10 år nu, og vi samarbejder stadig den dag i dag. Dette er som…
Læs mereHej Kim. Spændende case at læse om. Jeg har lige et enkelt spørgsmål - der står du har samarbejdet med Madbanditten.dk i mere end 10…
Læs mere[…] og sikre, at den leverer den bedste oplevelse til dine besøgende, bør du overveje at få en gratis hastighedsanalyse af din […]
Læs mere[…] Optimering af webshop er en kontinuerlig proces, der kræver opmærksomhed på detaljer og en forståelse for, hvad der driver kundeadfærd. Ved at undgå de…
Læs mere