Apache is een open source server programma dat verzoeken voor bestanden van gebruikers afhandelt. Een gebruiker vraagt via de browser (client) om een bestand aan de server, waarna de server het bestand aan die client 'uitserveert'.
Een enkele html pagina bevat vaak verwijzingen naar meerdere bestanden, zoals afbeeldingen, stylesheets en JavaScript. Deze bestanden worden allemaal apart door de browser aan de webserver opgevraagd.
Apache is het meest gebruikte webserver programma, maar er zijn ook alternatieven zoals IIS (Internet Information Server) van Microsoft. Binnen deze module gebruiken we Apache.
In het algemeen maken programma's op een computer, zoals bijvoorbeeld een browser, gebruik van 'poorten' om over een netwerk (internet) te communiceren met andere programma's, zoals een webserver. Je kunt een poort vergelijken met een deur, poorten zijn de in- en uitgangen van computers. Hierin is echter wel onderscheid te maken in 'luister' en 'verstuur' poorten.
De poorten zijn te herkennen aan een nummer, elke poort wordt gebruikt voor een specifiek type netwerk communicatie. De poorten met nummers hoger dan 1023 worden gebruikt voor het versturen van data over het netwerk. Er zijn ook poorten die alleen luisteren naar langskomend netwerk verkeer. Zo is er een luisterpoort voor http-requests (poort 80 of 443), ftp (poort 21) en voor e-mail (poort 25).
Poorten zijn dus essentieel voor contact met de buitenwereld, maar tegelijkertijd een zwakke plek in de beveiliging van computers. Met een firewall programma kun je de toegang bewaken. Hiermee leg je o.a. vast welke poorten door welk programma mogen worden gebruikt.
De gebruiker typt een http webadres in de browser (client). Via het netwerk (internet) wordt de request naar het ingevoerde adres gestuurd, waarbij een url wordt omgezet naar een IP adres. De server computer op het IP adres krijgt het verzoek binnen via poort 80, de standaard poort voor http netwerkverkeer.
Op de server computer draait het webserver programma Apache, wat continue naar netwerkverkeer op poort 80 luistert. Apache gaat op zoek naar het opgevraagde bestand binnen een bepaalde map, de zogenaamde 'document root' directory. Er wordt door Apache gecontroleerd of het opgevraagde bestand direct 'geserveerd' kan worden, of dat het het dynamische elementen zoals PHP scripting bevat. Deze controle vindt gewoonlijk plaats aan de hand van de bestands extentie (.php).
Als het bestand door Apache als PHP wordt aangeduid, wordt het eerst aan de PHP module aangeboden. Deze parsed het script in het bestand en het resultaat daarvan wordt aan Apache teruggegeven. Vervolgens 'serveert' Apache de uitkomst van de PHP module direct aan de client.
Een 'gewone' statische HTML pagina (met of zonder JavaScript) of een binair bestand (bijv. een jpeg) wordt dus NIET eerst aan de PHP module aangeboden en wordt dus direct aan de client uitgeserveerd.
PHP is een scripttaal, afgeleid van de programmeertaal Perl. PHP kan direct in HTML pagina's worden geïntegreerd en wordt geïnterpreteerd (ook wel parsen genoemd) door de PHP module op de webserver.
PHP wordt meestal geïnstalleerd als module voor een webserver programma zoals Apache. Aangezien PHP in de eerste plaats werd ontworpen voor het web, bevat het veel nuttige functionaliteit voor het onwikkelen van web-applicaties. Je kunt hier denken aan bijvoorbeeld database toegang, afbeeldingen bewerking en pdf generatie, formulier afhandeling, etc.
PHP werd uitgevonden door de Canadees van Deense afkomst Rasmus Lerdorf. In de herfst van 1994 wou Rasmus ontdekken hoe het mogelijk zou zijn om zijn applicaties via het web te publiceren. Hij schreef enkele server commando's die toelieten tellers en een gastenboek online te plaatsen. De Personal Home Page Tools waren geboren.
Formulieren zijn veel gebruikte elementen op het web. Gedurende het jaar 1995 schreef Rasmus dan ook een Form Interpreter (FI) om formulieren te beheren via het web.
Hij publiceerde zijn werk gratis op het web en de webdevelopers gemeenschap begon zich te interesseren voor PHP/FI zodat er al snel een werkgroep rond PHP/FI werd gevormd.
PHP is intussen al aan versie 5 (5.2) toe en de ontwikkeling ervan wordt verder afgehandeld door andere personen dan Rasmus Lerdorf. PHP staat nu voor Pre Hypertext Processor.
Momenteel zijn er zo'n 24 miljoen webdomeinen die PHP gebruiken!
Hieronder staan enkele voorbeelden van de mogelijkheden die PHP biedt:
Zodra Apache een PHP bestand tegenkomt roept deze de PHP module aan. De PHP module zoekt naar PHP tags binnen het bestand voert het script daar binnen uit en geeft het resultaat weer terug aan Apache. Deze geeft het resultaat door aan de client (browser).
Omdat PHP wordt uitgevoerd op de server, zal de client nooit de werkelijke PHP script broncode te zien krijgen, maar alleen het uiteindelijke resultaat. Let hier ook op bij het inleveren van je opdrachten deze periode!
De vorige periode hebben we met javascript gewerkt. JavaScript code wordt in de browser van de client uitgevoerd, dit betekent dat JavaScript client-side is. Een pagina wordt eerst door de browser (client) opgevraagd van de server waar deze is opslagen. De pagina wordt door de browser gelezen, bevat de pagina javascript, dan voert de browser deze uit.
PHP is server-side en wordt dus niet in jouw browser (client) uitgevoerd, maar op de web server. Een pagina wordt eerst door de browser opgevraagd van de webserver. Apache ziet dat het om een server script bestand gaat (bijv. aan de extentie .php) en laat de PHP module het bestand parsen. Zodra de PHP module klaar is het parsen van het script, verstuurd Apache het verwerkte resultaat in de vorm een html pagina naar de browser.
Als je een PHP bestand hebt gemaakt in een ontwikkel omgeving zoals Eclipse (voor meer info zie de workshop) en je plaatst deze op de CMD server, dan zal het PHP script verwerkt worden door de PHP module op de CMD server en dus niet in je browser(client).
Dit in tegenstelling tot JavaScript, wat wel lokaal in de browser wordt verwerkt. JavaScript staat altijd in een <script> tag in een html pagina (bijv. index.htm) welke niet door de Apache webserver als serverscript wordt herkend en welke in zijn geheel doorgestuurd wordt naar de client.
PHP is een zogenaamd open-source project, waardoor de broncode voor iedereen vrij beschikbaar is. Dit maakt het mogelijk dat er veel mensen aan samen werken om het project te verbeteren. Als je een Linux of andere Unix distributie gebruikt, is de kans groot dat PHP al met je systeem meegeleverd is.
De website van PHP bevat een schat aan informatie, zie: http://www.php.net.