2. PHP:n asentaminen 25 OPPITUNTI 2 PHP:n asentaminen Ennen kuin aloitamme PHP:n tutkimisen, on PHP-tulkki ensin hankittava ja asennettava; lisäksi on PHP:n kokoonpanoasetukset laitettava kohdalleen. PHP on saatavilla usealle eri alustalle ja se toimii monien eri palvelimien yhteydessä. Tällä tunnilla opit seuraavaa: Mitkä alustat, palvelimet ja tietokannat tukevat PHP4:ää Mistä löydät PHP:n ja muita hyödyllisiä vapaita ohjelmia Yksi tapa asentaa PHP Linuxille Joitakin asetuksia, joilla lisätään toimintoja PHP-ohjelmaan Joitakin kokoonpanosääntöjä Mistä saat apua, jos ongelmia ilmaantuu
26 2. PHP:n asentaminen Alustat, palvelimet, tietokannat ja PHP PHP sopii useille erilaisille alustoille. Sitä voidaan ajaa Windows-käyttöjärjestelmässä, useimmissa Unixkoneissa mukaanlukien LINUX ja jopa Macintosh-koneissa. PHP tukee hyvin monia palvelimia, esimerkiksi Apachea (Apache on itsekin vapaa ohjelmisto ja alustasta riippumaton), Microsoft Internet Information Server -palvelinta, WebSite Pro-, iplanet Web Server- ja Microsoftin Personal Web Server -palvelimia. Jälkimmäinen palvelin on hyödyllinen, kun testaat skriptejäsi verkon ulkopuolella Windows-koneella, vaikka Apachea voidaankin ajaa myös Windowsissa. Voit myös kääntää PHP:n itsenäiseksi sovellukseksi. Sen jälkeen voit kutsua sitä komentoriviltä. Tässä kirjassa keskitytään Web-sovellusten kehittämiseen, mutta ei aliarvioida PHP4:n tehoa yleisenä skriptityökaluna, joka on verrattavissa Perliin. PHP on kehitetty toimimaan tietokantojen yhteydessä. Tämä ominaisuus on niitä tekijöitä, jotka tekevät kielestä niinkin hyvän vaihtoehdon kehittyneiden Web-sovellusten kehittämiseen. PHP tukee monia tietokantoja suoraan. Tuettuja tietokantoja ovat muun muassa Adabas D, InterBase, Solid, dbase, mysql, Sybase, Empress, MySQL, Velocis, FilePro, Oracle, UNIX dbm, Informix ja PostgreSQL. PHP tukee myös ODBC-tietokantoja. Tässä kirjassa käytetään yhdistelmää Linux, Apache ja MySQL. Kaikki nuo ohjelmistot ovat vapaasti kopioitavissa ja käytettävissä ja ne voidaan asentaa suhteellisen vaivattomasti PC-koneelle. Saat tietoa Linuxin asentamisesta osoitteesta http://www.linux.org/help/beginner/ distributions.html. Jos haluat asentaa Linuxin Power PC -koneelle, saat tietoa LinuxPPC:stä osoitteesta http://www.linuxppc.org. MySQL, tässä kirjassa käytettävä tietokanta, voidaan ladata osoitteesta http://www.mysql.com. Ohjelmistosta on versiot usealle eri käyttöjärjestelmälle mukaanlukien UNIX, Windows ja OS/2. Toisaalta voit helposti pitäytyä Windowsissa, NT:ssä tai MacOS-käyttöjärjestelmässä. PHP on kaiken kaikkiaan alustasta riippumaton skriptikieli. Mistä löydät PHP4:n ja lisätietoa PHP4:n voit löytää osoitteesta http://www.php.net/. PHP4 on open source -ohjelmisto, joten sen lataamiseen ei tarvita luottokorttia. PHP-sivusto on erinomainen resurssi PHP-koodaajille. Koko käsikirja on luettavissa suoraan osoitteessa http://www.php.net/manual/ ja siinä on mukana neuvoja sisältäviä ilmoituksia muilta PHP-koodaajilta. Voit myös ladata sen useassa muodossa. PHP4:n asentaminen Linuxille ja Apachelle Tässä osassa tutkimme yhtä tapaa asentaa PHP4 Linux-koneelle, jossa on Apache-palvelin. Prosessi on enemmän tai vähemmän samanlainen kaikkien UNIX-versioiden kohdalla. Voit löytää esirakennettuja PHPversioita järjestelmällesi ja niitä on yksinkertaisempaa asentaa. PHP:n kääntäminen antaa kuitenkin enemmän mahdollisuuksia kontrolloida ominaisuuksia, joita ohjelmaasi tulee. Varmista ennen asennuksen aloittamista, että olet kirjoittautunut järjestelmääsi root-käyttäjänä. Jos sinun ei sallita päästä järjestelmän root-tilille, on sinun ehkä pyydettävä järjestelmän hallitsijaa asentamaan PHP puolestasi. Apachen PHP-moduulin voit kääntää kahdella eri tavalla. Voit joko kääntää Apachen uudelleen ja linkittää PHP:n staattisesti siihen tai kääntää PHP:n dynaamisesti jaettavana kohteena (Dynamic Shared Object, DSO). Jos Apache-versiosi käännettiin DSO-tuettuna, se kykenee tukemaan uusia moduuleita ilman palvelimen uudelleen kääntämistä. Tämä menettely on helpoin keino ottaa PHP käyttöön ja tutkimme menettelyä seuraavaksi.
2. PHP:n asentaminen 27 Testataksesi sen, että Apache tukee DSO-kohteita sinun tulee käynnistää Apachen binääriohjelma (httpd) argumenttia -l käyttäen. /www/bin/httpd -l Nyt sinun tulisi nähdä lista moduuleita. Jos näet moduulin mod_so.c niiden joukossa, sinun tulisi pystyä jatkamaan. Muutoin sinun on ehkä käännettävä Apache uudelleen. Apache sisältää täydet ohjeet uudelleenkääntämiseen. Jos olet jo tehnyt niin, sinun on ladattava viimeisin PHP4:n jakeluversio. Versio on yleensä arkistoitu tartiedostoksi ja tiivistetty gzip-ohjelmalla, joten sinun on purettava se: tar -xvzf php-4.0.tar.gz Kun olet purkanut paketin, sinun tulee siirtyä PHP4-jakelukansioon: cd../php-4.0 Tuosta kansiosta löydät skriptin nimeltä configure. Se hyväksyy argumentit, jotka kontrolloivat PHP:n tukemia piirteitä. Tässä esimerkissä käytämme joitakin hyödyllisiä komentoriviargumentteja, vaikka saatatkin haluta käyttää omia argumenttejasi. Käsitelemme joitakin configure-asetuksia myöhemmin tällä tunnilla../configure --enable-track-vars \ --with-gd \ --with-mysql \ --with-apxs=/www/bin/apxs Polku, joka sijoitetaan argumenttiin --with-apxs, on todennäköisesti erilainen sinun ympäristössäsi. On mahdollista, että löydät apxs:n samasta kansiosta kuin Apache-ohjelman. Sen jälkeen kun configureskripti on ajettu, voit ajaa make-ohjelman. Komennon ajamiseen tarvitset järjestelmässäsi olevaa C- kääntäjää. make make install Näiden komentojen tulisi päättää PHP4:n kääntämis- ja asentamisprosessi. Sinun tulisi voida asettaa ja ajaa Apache. Joitakin configure-asetuksia Kun ajoimme configure-skriptin, käytimme komentoriviargumentteja, jotka määrittivät piirteet, joita PHPtulkki sisältää. Itse skripti antaa luettelon käytettävistä asetuksista. Kirjoita seuraava teksti PHP-kansiosta käsin:./configure --help
28 2. PHP:n asentaminen Tulostettu lista on pitkä, joten saatat haluta lisätä sen tiedostoon lukeaksesi luetteloa myöhemmin kaikessa rauhassa:./configure --help > configoptions.txt Vaikka komennon tulostus on hyvin selittävä, katsomme vain muutamia hyödyllisiä asetuksia, erityisesti niitä, joita saatat tarvita tässä kirjassa. --enable-track-vars Tämä asetus täyttää assosiatiiviset taulukot arvoilla, jotka lähetetään osana GET- tai POST-pyyntöjä tai evästeen mukana. Saat lisätietoa taulukoista luvussa 7, Taulukot ja HTTP-pyynnöistä luvussa 13, Pintaa syvemmältä. On hyvä käyttää tätä asetusta ajettaessa configure. --with-gd --with-gd mahdollistaa tuen GD-kirjastolle, joka sallii asennettuna dynaamisten GIF- ja PNG-kuvien luomisen skripteistä. Voit lukea lisää dynaamisten kuvien luomisesta luvusta 14, Dynaamisten kuvien käsittely. Vaihtoehtoisesti voit määrittää polun GD-kirjastosi asennuskansioon: --with-gd=/path/to/dir --with-mysql --with-mysql mahdollistaa tuen MySQL-tietokannalle. Jos järjestelmässäsi on asennettu MySQL johonkin toiseen hakemistoon kuin oletushakemistoon, sinun on määritettävä polku: --with-mysql=/path/to/dir Kuten tiedät, PHP tarjoaa tuen muille tietokannoille. Taulukko 2.1 luettelee joitakin niistä ja ne configureasetukset, joita tietokantojen käyttämiseen tarvitaan. TAULUKKO 2.1 Joitakin configure-asetuksia Tietokanta configure-asetus Adabas D FilePro msql informix iodbc OpenLink ODBC Oracle PostgreSQL Solid --with-adabas --with-filepro --with-msql --with-informix --with-iodbc --with-openlink --with-oracle --with-pgsql --with-solid
2. PHP:n asentaminen 29 Sybase Sybase-CT Velocis LDAP --with-sybase --with-sybase-ct --with-velocis --with-ldap Apachen kokoonpano Kun olet kääntänyt PHP:n ja Apachen, sinun tulee tarkistaa Apachen kokoonpanotiedosto, httpd.conf, jonka löydät Apachen asennushakemiston alihakemistosta nimeltä conf. Lisää seuraavat rivit tiedostoon: AddType application/x-httpd-php.php AddType application/x-httpd-php-source.phps Noiden rivien avulla taataan, että PHP-tulkki jäsentää tiedostot, jotka päättyvät.php-tunnisteeseen. Jokainen tunnisteella.phps varustettu tiedosto tulostetaan PHP-lähteenä. Tällöin lähdekoodi muunnetaan HTMLmuotoon ja värikoodataan. Se voi olla hyödyllistä skriptien vianhaussa. Jos haluat tarjota käyttäjillesi PHPsivuja, joiden tunnukset ovat heille tuttuja, voit ottaa käyttöön minkä tahansa haluamasi tunnuksen. Seuraavalla menettelyllä voit jopa taata, että tiedostoja, joiden tunnuksena on.html, käsitellään PHPtiedostoina: AddType application/x-httpd-php.html Huomaa, että.html-loppuisten tiedostojen käsitteleminen PHP-skripteinä voisi kaataa sivustosi, koska jokainen tuolla tunnuksella varustettu tiedosto jäsennetään PHP-tulkilla ennen sen antamista käyttäjälle. Jos PHP on esiasennettu eikä sinulla ole pääsyä Apachen kokoonpanotiedostoihin, voit ehkä muuttaa tunnuksia, jotka käsitellään suoritettavina PHP-tiedostoina sijoittamalla AddType-ohjeen tiedostoon nimeltä.htaccess. Kun olet luonut tuon tiedoston, ohje vaikuttaa kyseiseen hakemistoon ja kaikkiin sen alihakemistoihin. Tämä menettely toimii vain, jos AllowOverride-asetus on asetettu hakemistolle joko arvoon FileInfo tai All. Vaikka.htaccess-tiedostonimi on oletuksena pääsynvalvontatiedostoon, se on saattanut muuttua. Tarkista AccessFileName-kohta tiedostosta httpd.conf. Vaikka sinulla ei olisikaan root-oikeuksia, sinun tulisi voida lukea Apachen asetustiedostoja. Tiedoston.htaccess avulla voit mukauttaa palvelintilasi, jos sinulla ei ole pääsyä root-tiliin. Lisäkeino PHP:n toiminnan ohjaamiseen muille kuin root-käyttäjille tiedosto ons php.ini. php.ini Kun olet kääntänyt tai asentanut PHP:n, voit silti muuttaa sen käyttäytymista tiedoston php.ini kautta. UNIXjärjestelmissä tuon tiedoston oletuspaikkana on /usr/local/lib ; Windows-järjestelmissä se sijaitsee oletuksena Windows-kansiossa. Ollessaan työhakemistossa tämä php.ini-tiedosto korvaa oletushakemistossa olevan.ini-tiedoston, joten voit muuttaa PHP:n käyttäytymistä hakemistokohtaisesti. Ohjelman mukana tulee php.ininäytetiedosto, jossa ovat tehdasasetukset, joita käytetään silloin, kun mitään php.ini-tiedostoa ei ole käytössä. Oletusasetuksien tulisi riittää useimpien kirjan esimerkkien kohdalla, vaikka luvussa 22, Vianhaku, puhutaankin joistakin muutosmahdollisuuksista. Asetustiedostossa ohje tai sääntö erotetaan arvosta
30 2. PHP:n asentaminen yhtäsuuruusmerkillä. Tulostumattomat merkit ohitetaan. Jos PHP on asennettu aiemmin järjestelmääsi, saatat haluta tarkistaa joitakin php.ini-tiedoston kohtia. Muista, että jos voit muuttaa tätä asiakirjaa, voit myös luoda asetustiedoston skriptihakemistoosi, jolloin se korvaa oletuksena olevan asetustiedoston. Voit asettaa myös ympäristömuuttujan PHPRC, joka korvaa php.ini-tiedoston määrityksen. Voit muuttaa php.iniasetuksesi milloin tahansa. Mutta jos ajat PHP:tä Apache-moduulina, sinun tulee käynnistää palvelin uudelleen, jotta muutokset tulisivat voimaan. short_open_tag Tämä short_open_tag-sääntö määrittää, voitko aloittaa PHP-koodilohkon symboleilla <? ja lopettaa sen symboleilla?>. Jos näin ei voida tehdä, on jokin seuraavista säännöistä käytössä: short_open_tag = Off short_open_tag = False short_open_tag = No Salliminen voidaan toteuttaa seuraavilla tavoilla: short_open_tag = On short_open_tag = True short_open_tag = Yes Saat lisätietoa PHP:n aloitus- ja lopetustageista luvusta 3, Ensimmäinen skripti. Virheilmoitussäännöt Koodisi diagnosointia varten sinun tulisi ottaa käyttöön sääntö, joka sallii virheilmoitusten tulostamisen selaimelle. Asetus on päällä oletuksena: display_errors = On Voit myös asettaa virheiden raportoinnin tason. Käsittelemme saatavilla olevia asetuksia error_reporting-säännölle tarkemmin luvussa 22. Toistaiseksi riittää, kun teet asetuksen seuraavasti: error_reporting = E_ALL & ~ E_NOTICE Tuo asetus raportoi kaikista virheistä, mutta ei tulosta varoituksia mahdollisista ongelmista. Huomautukset ja varoitukset voivat sotkea joitakin PHP-tekniikoita. Tämä asetus on oletuksena.
2. PHP:n asentaminen 31 Muuttujakohtaiset asetukset PHP laittaa jotkin muuttujat saataville tuloksena GET- tai POST-pyyntöön tai cookieen. Voit vaikuttaa siihen php.ini-tiedostosi kautta. Asetus nimeltä track_vars luo vastaavat taulukot, jotka sisältävät HTTP-pyynnön tuloksena generoidut elementit. Taulukoiden luonti on oletuksena päällä: track_vars = On Asetus nimeltä register_globals määrittää, tuleeko HTTP-pyynnön tuloksena olevat arvot laittaa saataville globaaleina arvoina. Monet tämän kirjan skriptit vaativat, että asetus on päällä: register_globals = On Help! Apu on aina Internetissä lähellä, erityisesti silloin, kun kyse on avoimesta lähdekoodista. Odota kuitenkin hetki ennen kysymysten lähettämistä. Olipa asennuksesi, kokoonpanosi tai ohjelmaongelmasi kuinka vaikea tahansa, et todennäköisesti ole kuitenkaan yksin. Joku on jo voinut vastata kysymykseesi. Kun lähdet etsimään vastauksia, ensimmäinen kohteesi tulisi olla virallinen PHP-sivusto osoitteessa http://www.php.net/, ja siellä erityisesti manuaali osoitteessa http://www.php.net/manual. Jos et sittenkään löydä vastauksia, älä unohda, että PHP-sivuilta voidaan tehdä hakuja. Hakemasi neuvo saattaa piileskellä lehtiartikkelissa tai FAQ-tiedostossa. Toinen erinomainen ja hakukelpoinen resurssi on PHP:n tietämyskanta osoitteessa http://www.faqts.com/knowledge-base/index.phtml. Ei onnistu vieläkään? Hakukelpoisia postituslista-arkistoja löydät osoitteesta http://www.php.net/mailsearch.php3. Nämä arkistot sisältävät suunnattoman määrän informaatiota, joka on tullut usealta hyvältä PHP-yhteisöltä. Käytä hieman aikaasi kokeillen muutamilla hakusanayhdistelmillä. Jos olet edelleenkin vakuuttunut siitä, että ongelmaasi ei ole valmista ratkaisua, teet palveluksen PHPyhteisölle julkistamalla ongelman laajemmin. Voit liittyä PHP-postituslistoille osoitteessa http://www.php.net/support.php3. Vaikka nämä listat ovat usein hyvin runsaita, voit oppia niiden kautta paljonkin. Jos aiot käyttää PHP:tä vakavissasi, sinun tulisi tilata ainakin parhaita luetteloita. Kun löydät listan, joka tyydyttää sinua, voit postittaa sille ongelmiasi. Kun lähetät ongelman, on hyvä laittaa mukaan mahdollisimman paljon informaatiota (kirjoittamatta kuitenkaan mitään romaania). Seuraavat tiedot ovat tärkeitä: Käyttöjärjestelmäsi Käytössäsi oleva PHP-versio Valitsemasi configure-asetukset Tulosteet, joita configure tai make generoivat asennuksen yhteydessä Tarpeeksi hyvä esimerkki koodista, joka aiheuttaa ongelmia
32 2. PHP:n asentaminen Miksi tietoa tulisi laittaa näin paljon postituslistalle menevien kysymysten mukaan? Ensiksikin on tärkeää, että kehittäjän omat tutkimuskyvyt kehittyvät. Hyvä tutkija osaa yleensä ratkaista ongelman nopeasti ja tehokkaasti. Lapsellisen kysymyksen tekeminen tekniselle listalle johtaa usein siihen, että saat vastauksena pari viestiä, joissa sinua kehotetaan aloittamaan vastausten etsiminen joistakin arkistoista. Toiseksi on muistettava, että postituslista ei ole analoginen vastine yleiselle tekniselle tuelle. Kenellekään ei makseta kysymyksiin vastaamisesta. Siitä huolimatta apunasi on merkittävä määrä lahjakkuutta ja tietämystä. Myös jotkut PHP:n luojat ovat mukana. Hyvä kysymys ja siihen tullut vastaus arkistoidaan auttamaan muita koodaajia. Sellaisen kysymyksen tekeminen, johon on vastattu jo monta kertaa, aiheuttaa vain lisää melua. Edellä kerrotusta huolimatta sinun ei tulisi arastella ongelmien lähettämistä listalle. PHP-kehittäjät ovat sivistynyttä ja auttavaista rotua ja tuomalla ongelman yhteisön tietoon saatat auttaa muita saman ongelman ratkaisemisessa. Yhteenveto PHP4 on avointa lähdekoodia. Se on avointa myös siinä mielessä, että se ei vaadi tietyn palvelimen, käyttöjärjestelmän tai tietokannan käyttämistä. Tällä tunnilla sait tietää, mistä löydät PHP:n ja muita avoimen lähdekoodin ohjelmistoja, jotka voivat auttaa Web-sivuston ylläpidossa. Opit kääntämään PHP:n Apachen moduuliksi Linux-koneelle. Jos lataat PHPohjelmiston toiselta alustalta, jakeluversiosi sisältää vaiheittaiset ohjeet. Sait tietää joistakin configureasetuksista, joilla voidaan muuttaa ohjelman tukemia ominaisuuksia. Opit tuntemaan php.ini-tiedostoa ja sen sisältämiä sääntöjä. Lopuksi luvussa kerrottiin tukilähteistä. Nyt sinulla pitäisi olla valmiudet pureutua itse ohjelmointikieleen. K&V K Olet lukenut juuri PHP:n asentamisesta Linuxille ja Apache-palvelimelle. Tarkoittaako tämä sitä, että kirja ei sovellu muille palvelimille tai käyttöjärjestelmille? V Ei, yksi PHP:n vahvuuksia on se, että sitä voidaan ajaa monilla eri alustoilla. Jos sinulla on ongelmia PHP:n asentamisessa, älä unohda lukea PHP-ohjelmiston mukana tulevia ohjetiedostoja. Mukana on yleensä vaiheittainen ja kattava asennusohje. Jos ongelmia kuitenkin ilmenee, tutki tämän luvun Help-jaksoa. Jaksossa mainitut online-resurssit sisältävät vastauksia ja ratkaisuja lähes joka ongelmaan. Työpaja Työpaja tarjoaa pikakysymyksiä, joiden avulla voit kerrata läpikäytyä materiaalia. Yritä ymmärtää vastaukset ennen kuin jatkat seuraavaan lukuun. Vastaukset annetaan liitteessä A.
2. PHP:n asentaminen 33 Kysymyksiä 1. Mistä löydän PHP:n online-manuaalin? 2. Kuinka saan apua asetusvaihtoehdoista Unixissa (asetuksista, joita laitetaan configure-skriptin parametreiksi PHP-ohjelmassa)? 3. Minkä niminen Apachen asetustiedosto tyypillisesti on? 4. Mikä rivi tulee lisätä Apachen asetustiedostoon, jotta taattaisiin, että.php-tarkenne tunnistetaan? 5. Minkä niminen on PHP:n asetustiedosto? Toiminta 1. Asenna PHP järjestelmääsi. Jos se on jo paikoillaan, avaa php.ini-tiedosto ja tarkista kokoonpano..
34 2. PHP:n asentaminen