+XLVZHUN/LQX[,QVWDOODWLH3+3 PHP is de meest gebruikte programmeertaal voor het maken van websites. Als je PHP met Apache gebruikt, dan wordt het mogelijk om zogenaamde Content Management Systems (CMS) te gebruiken, zoals WordPress, Joomla en Drupal. Het huiswerk voor deze week is: installeer de PHP scripting taal. 2YHU3+3 PHP is bedacht door Rasmus Lerdorf. De oorspronkelijke betekenis van de letters PHP is Personal Home Page, maar dat werd vrij snel veranderd in PHP Hypertext Preprocessor. Hoewel PHP zuigt (zie: Apache front-end), is het een zeer populaire scripting-taal. Dit komt voornamelijk omdat bijna alle Content Management Systems (CMS), zoals WordPress, Joomla, Drupal en Zend de taal gebruiken. PHP wordt met Apache meegecompileerd. Dat wil zeggen: we moeten eerst de PHP shared module compileren. Daarna moeten we Apache opnieuw compileren zodat Apache de nieuwe module kan gebruiken. +HWVXGRPHFKDQLVPH Het compileren en installeren van de PHP software doen we namens de root gebruiker. Hierdoor worden automatisch de juiste toegangsrechten op de bestanden toegepast. Cygwin gebruikers Sudo voor Cygwin gebruikers: rechts-klik op het icoon van de Cygwin terminal, en kies voor Als administrator uitvoeren. PHP gaat ervan uit dat minimaal de volgende pakketten op je systeem aanwezig zijn. Deze moeten we dus eerst nog installeren. apt-cyg install libxml2-devel libjpeg-devel libpng-devel Het pakket libxml2 is een verzameling functies waarmee XML (Extended Markup Language) documenten kunnen worden gemaakt en gelezen. Met de pakketten libjpeg en libpng kunnen afbeeldingen in het PNG1 en JPEG2 formaat worden bewerkt. Cygwin gebruikers moeten er rekening mee houden dat soms de shared modules niet gevonden worden door het configure script. Dit komt door afwijkende bestandsnamen. Om ervoor te zorgen dat de bestandsnaam klopt, gebruiken we een truuk die veel in de Linux-wereld gebruikt wordt. We maken een symbolic link (snelkoppeling) aan met de juiste bestandsnamen: ln -s /usr/lib/libpng.dll.a /usr/lib/libpng.a ln -s /usr/lib/libjpeg.dll.a /usr/lib/libjpeg.a Let op: als je hier de foutmelding File exists krijgt, dan is het ook goed. Het bestand heeft dan al de juiste naam. Andere Linux gebruikers Gebruikers van andere Linux distributies (Ubuntu, Debian, Suze, OSX, etc.) starten een terminal met de toetsencombinatie <Ctrl><Alt>-T. We gebruiken het commando sudo om in te loggen met het su (become Super User) commando. Daardoor blijven we ingelogd: sudo su PHP gaat ervan uit dat minimaal de volgende pakketten met shared libraries op je systeem aanwezig zijn. Deze moeten we dus eerst installeren. apt-get install libxml2-dev libjpeg-dev libpng-dev Raspbian-gebruikers (Raspberry PI) moeten er rekening mee houden dat hun software voor de ARM chip gecompileerd gaat worden. De loadable modules staan op een andere plek dan waar PHP ze verwacht. Daarom moeten de Raspbian gebruikers volgende symbolic links aanmaken: ln -s /usr/lib/arm-linux-gnueabihf/libjpeg.a /usr/lib/ ln -s /usr/lib/arm-linux-gnueabihf/libpng.a /usr/lib/ 1 2 Portable Network Graphics Joint Photographic Experts Group %URQFRGHQHHUODGHQHQXLWSDNNHQ We gaan eerst de broncode voor PHP neerladen. Ga in de directory voor broncode staan. Dit doen we met het commando cd (change directory): cd /usr/local/src Nu kunnen we de broncode voor PHP neerladen. Dit doen we met het wget (www get document) programma: wget -N http://www.commandlinerevolution.nl/Source/php-5.2.17.tar.gz Het programma wget maakt een kopie van het neergeladen bestand met een volgnummer als het bestand al een keer is neergeladen. Dit is niet handig. Via de optie N (newer) geven we aan dat wget het eventueel bestaande bestand vervangt als het nieuwer is. De broncode is ingepakt in het tar (tape archive, in Linux slang: tarball) formaat. Pak het bestand uit middels het tar commando: tar -xvf php-5.2.17.tar.gz Met de optie x (extract) geven we aan dat we het bestand willen uitpakken. Middels optie v (verbose) geven we aan dat we het uitpak-proces willen zien. Met optie f (file) geven we aan dat het om een bestand gaat. Je ziet nu dat het tar programma de bestanden uitpakt naar de map php-5.2.17. Wacht tot dit klaar is. %URQFRGHSDWFKHQ PHP maakt gebruik van de XML library (bibliotheek met functies voor het bewerken van XML). Deze verschilt sterk in versie per Linux systeem. Om ervoor te zorgen dat de PHP code op alle systemen gecompileerd kan worden, gaan we de broncode “oplappen” (patchen). Ga allereerst in de zoëven aangemaakte directory staan. Dit doen we met het commando cd (change directory): cd php-5.2.17 Nu gaan we de het patch-bestand neerladen. Dit doen we ook weer met het wget programma: wget -N http://www.commandlinerevolution.nl/Source/php-5.2.17-libxml2-2.9.0.patch Tot slot kunnen we de patch uitvoeren. Dit doen we met het patch programma: patch -p0 < php-5.2.17-libxml2-2.9.0.patch Middels de optie p (path) geven we aan welk deel van de in het patch-bestandje genoemde directory relatief is aan de map waarin de broncode van PHP staat. Met het omgekeerde redirection-symbool (“<”) geven we aan dat het hele bestand als input moet worden genomen. De output moet er alsvolgt uitzien: patching file ext/dom/node.c Hunk #1 succeeded at 1950 (offset 55 lines). patching file ext/dom/documenttype.c Hunk #1 succeeded at 215 (offset 10 lines). patching file ext/simplexml/simplexml.c Hunk #1 succeeded at 1343 (offset -74 lines). %URQFRGHFRPSLOHUHQ Zoals eerder besproken bestaat het uitvoeren van locale installaties uit drie stappen: configureren, compileren en installeren (zie ook: Linux Huiswerksysteem). Configureren Omdat PHP, net als alle Linux-software, is geschreven als platform-onafhankelijke software, moeten er extra tests op je systeem worden uitgevoerd. Het configure script is een zogenaamd shell script waarmee deze tests worden uitgevoerd. Dit script wordt in alle software-distributies meegeleverd. Je kunt het script alsvolgt starten: ./configure --with-apache=../apache_1.3.29 \ --with-mysql=/usr/local \ --without-iconv \ --with-gd \ --with-jpeg-dir=/usr \ --with-png-dir=/usr \ --enable-mbstring Zoals je ziet is het commando over meerdere regels verdeeld. Dit moest omdat de complete regel niet op de pagina paste -. Je kunt gerust het hele blokje tekst copiëeren en in de terminal plakken. De afgebroken regels zijn namelijk beëindigd met een backslash (“\”) character. Dit zorgt ervoor dat de terminal de regels ziet als één commando. Via de optie -with-apache geven we aan waar PHP de extra broncode moet plaatsen, waarmee we straks Apache kunnen hercompileren. Met de optie -with-mysql geven we aan waar de broncode van MySQL zich bevindt. Met de optie without-iconv geven we aan dat de iconv3 bibliotheken niet gebruikt moeten worden. Met -with-gd compileren we de GD4 broncode mee. Via de opties -with-jpeg-dir en -with-png-dir geven we aan waar de voor GD benodigde broncode voor het bewerken van afbeeldingen zich bevindt. Met de optie -enable-mbstring (multi-byte strings) geven we aan dat we unicode strings, zoals UTF-8, willen gebruiken. De output ziet er ongeveer alsvolgt uit: Generating files creating ./config.status creating php5.spec creating main/build-defs.h creating scripts/phpize creating scripts/man1/phpize.1 creating scripts/php-config creating scripts/man1/php-config.1 creating sapi/apache/libphp5.module creating sapi/cli/php.1 creating main/php_config.h creating main/internal_functions.c creating main/internal_functions_cli.c +--------------------------------------------------------------------+ | License: | | This software is subject to the PHP License, available in this | | distribution in the file LICENSE. By continuing this installation | | process, you are bound by the terms of this license agreement. | | If you do not agree with the terms of this license, you must abort | | the installation process at this point. | +--------------------------------------------------------------------+ Thank you for using PHP. Remember to check the platform specific part of the reference manual for hints about installing MySQL on your platform. Also have a look at the files in the Docs directory. Compileren Nadat PHP de systeemvereisten heeft gecontroleerd, kan de broncode gecompileerd worden. Dit doen we met het make programma: make We kijgen nu de output van het compileer-proces te zien. Deze bestaat voornamelijk uit het herhaaldelijk uitvoeren van het GNU compiler programma gcc. De output van een succesvolle compilatie ziet er alsvolgt uit: Build complete. Don't forget to run 'make test'. Let op: Voer make test niet uit. Het compileer-proces duurt toch al vrij lang. Op mijn machine (3Ghz/500Mb) duurde het een kwartier. Op mijn Raspberry PI (500Mhz/500Mb) zelfs 1 uur. Installeren We hebben nu een aantal zogenaamde binaries (uitvoerbare programma’s) gemaakt. De binaries, inclusief help- en loadable modules, moeten nu in de juiste locaties geïnstalleerd worden: Type bestanden binaries (programma’s) man pages (help-bestanden) libraries (loadable modules) includes (broncode) locatie /usr/local/bin /usr/local/man /usr/local/lib/php /usr/local/include/php 3 De iconv software converteert van de ene teken-set naar de andere, bijvoorbeeld ASCII of UTF-8. PHP heeft een bepaalde versie nodig welke in veel Linux systemen niet ondersteund wordt. Om conflicten te voorkomen, compileren we de iconv broncode niet mee. 4 GD staat voor Graphics Draw. Een framework, bedoeld voor web-programmeurs om afbeeldingen te bewerken. Zie voor meer info: http://www.boutell.com/gd/ Dit kunnen we automatisch doen via de optie install van het make programma: make install De bestanden worden nu gekopieerd naar de juiste locaties en voorzien van de juiste toegangsrechten. Ook dit duurt vrij lang: ongeveer 5 minuten. Wacht rustig af. De output ziet er alsvolgt uit: Installing PHP SAPI module: apache Installing PHP CLI binary: /usr/local/bin/ Installing PHP CLI man page: /usr/local/man/man1/ Installing build environment: /usr/local/lib/php/build/ Installing header files: /usr/local/include/php/ Installing helper programs: /usr/local/bin/ program: phpize program: php-config Installing man pages: /usr/local/man/man1/ page: phpize.1 page: php-config.1 Installing PEAR environment: /usr/local/lib/php/ [PEAR] Archive_Tar - installed: 1.3.7 [PEAR] Console_Getopt - installed: 1.2.3 [PEAR] Structures_Graph- installed: 1.0.3 [PEAR] XML_Util - installed: 1.2.1 [PEAR] PEAR - installed: 1.9.1 Wrote PEAR system config file at: /usr/local/etc/pear.conf You may want to add: /usr/local/lib/php to your php.ini include_path Installing PDO headers: /usr/local/include/php/ext/pdo/ $SDFKHKHUFRPSLOHUHQ In de vorige stap hebben we de PHP-module gecompileerd, zodat er extra broncode wordt toegevoegd aan de map voor de Apache broncode. Deze extra broncode moet nu worden meegecompileerd. Ga allereerst terug naar de map voor de Apache broncode. Dit doen we met het commando cd: cd ../apache_1.3.29 Zoals we eerder hebben gezien (zie: Apache Installatie), installeren we Apache in drie stappen: configureren, compileren en installeren. Configureren Het configure-script kunnen we alsvolgt starten: bash ./configure --activate-module=src/modules/php5/libphp5.a Normaal zou het commando ./configure voldoende zijn, maar in sommige Linux versies zoals Debian, wordt standaard niet bash als commando-interpreter gebruikt maar dash, een variant op het bash programma. De Apache scripting benodigt bash. Met de optie -activate-module geven we aan dat de PHP module moet worden meegecompileerd. Configuring for Apache, Version 1.3.29 + using installation path layout: Apache (config.layout) + activated php5 module (modules/php5/libphp5.a) + Warning: no Perl interpreter detected for support scripts. + Perhaps you need to specify one with --with-perl=FILE. Creating Makefile Creating Configuration.apaci in src Creating Makefile in src + configured for Cygwin platform + setting C compiler to gcc + setting C pre-processor to gcc -E + using "tr [a-z] [A-Z]" to uppercase + checking for system header files + adding selected modules o php5_module uses ConfigStart/End + using builtin Expat + checking sizeof various data types + doing sanity check on compiler and options Creating Makefile in src/support Creating Makefile in src/os/cygwin Creating Makefile in src/ap Creating Makefile in src/main Creating Makefile in src/lib/expat-lite Creating Makefile in src/modules/standard Creating Makefile in src/modules/php5 Compileren Nu kan het hercompileren van Apache worden gestart. Dit doen we met het make programma: make We kijgen nu de output van het compileer-proces te zien. Deze bestaat voornamelijk uit het herhaaldelijk uitvoeren van het GNU compiler programma gcc. De output van een succesvolle compilatie ziet er alsvolgt uit: gcc -c -I../os/cygwin -I../include -DCYGWIN -DUSE_HSREGEX -DUSE_EXPAT -I../lib/expatlite -DNO_DL_NEEDED `../apaci` checkgid.c gcc -DCYGWIN -DUSE_HSREGEX -DUSE_EXPAT -I../lib/expat-lite -DNO_DL_NEEDED `../apaci` -o checkgid -L../os/cygwin -L../ap checkgid.o -lm -lap -los -lcrypt -lgdbm make[2]: Map '/usr/local/src/apache_1.3.29/src/support' wordt verlaten <=== src/support make[1]: Map '/usr/local/src/apache_1.3.29' wordt verlaten make[1]: Map '/usr/local/src/apache_1.3.29' wordt binnengegaan make[1]: Map '/usr/local/src/apache_1.3.29' wordt verlaten <=== src Installeren We hebben nu een aantal zogenaamde binaries (uitvoerbare programma’s) gemaakt. De binaries, inclusief help- en configuratiebestand moeten nu in de juiste locaties geïnstalleerd worden. Dit doen we opnieuw met het make programma: make install De bestanden worden geïnstalleeerd. De output ziet er alsvolgt uit: +--------------------------------------------------------+ | You now have successfully built and installed the | | Apache 1.3 HTTP server. To verify that Apache actually | | works correctly you now should first check the | | (initially created or preserved) configuration files | | | | /usr/local/apache/conf/httpd.conf | | | and then you should be able to immediately fire up | | Apache the first time by running: | | | | /usr/local/apache/bin/apachectl start | | | Thanks for using Apache. The Apache Group | | http://www.apache.org/ | +--------------------------------------------------------+ +HWKRHUDPRPHQW We hebben de PHP module met Apache meegecompileerd. Dit betekent dat Apache nu beschikking heeft over de PHP scripting taal. Om te controleren of de PHP module aan Apache is toegevoegd kunnen we het volgende commando gebruiken: /usr/local/apache/bin/httpd -l De (ingekorte) output moet er alsvolgt uitzien. Als het goed gegaan is heb je nu de module mod_php5.c meegecompileerd: Compiled-in modules: http_core.c mod_env.c mod_log_config.c mod_mime.c mod_negotiation.c mod_status.c mod_userdir.c mod_alias.c mod_access.c mod_auth.c mod_setenvif.c mod_php5.c suexec: disabled; invalid wrapper /usr/local/apache/bin/suexec +XLVZHUNRSVWXUHQ Teken de opdracht af door mij jouw command history te sturen. Dit doe je met een pijpleiding tussen de commando’s history en email. Zorg dat het onderwerp van de e-mail tussen aanhalingstekens staat: history | email -s "PHP installatie" daniel@localhost $GPLQLVWUDWRUXLWORJJHQ We hebben Apache opnieuw gecompileerd met de PHP module, maar we zijn nog steeds ingelogd als Administrator (root). Geef tot slot <Ctrl>-D om de Administrator uit te loggen.
© Copyright 2024 ExpyDoc