PHP telepítése Debian 6-on

Ebben a fejezetben a PHP forráskódból való telepítéséről lesz szó Debian 6-on. Több verzió telepítését mutatom be, melyek az aktuális legújabb verziói az 5.4-nek, 5.3-nak és a már elavultnak tekinthető 5.2-nek is. Ahogy az eddigi fejezetekben, itt is a forráskódból fordításra összpontosítok. Hogy miért és hogy mire lehet számítani, arról a "Bevezető" részben írok bővebben, ám befogadható rövidséggel.

Tartalomjegyzék

Bevezető

Egykor hatalmas rejtély volt számomra, hogyan lehet PHP-t forráskódból fordítani és telepíteni. Pedig életem első webprogramozásról szóló könyve is éppen ezt a metódust mutatta be. Valahogy mégis misztikus maradt és csak részeredményeket értem el. De úgy elment a kedvem tőle, hogy hosszú ideig nem is próbálkoztam vele. XAMPP-ot használtam, majd később Ubuntu Linuxon is annak linuxos változatát.

Történt ez egészen addig, míg rá nem jöttem, hogy ez már nem elég. Egyszerre több verzió kellett volna, és olykor nem működtek funkciók, mert nem úgy lett fordítva a letölthető kész csomag PHP-ja, hogy azt lehetővé tegye. Éreztem a szükséget, de még mindig a misztikum vette körül az egészet és ezen az sem segített, ahogy a neten röpködtek a fogalmak a témában. Valahogy választ mégsem találtam. Bizonyára rosszul kerestem. Illetve a legtöbben a könnyebb utat javasolták. "Rakj fel egy XAMPP-ot és mellé egy EasyPHP-t!" jellegű tanácsokra gondolok. De az mégsem az igazi. Szűkek voltak a lehetőségek. És a PHP hivatalos dokumentációjában is csak egy gyors utasítás olvasható, ami nem bizonyult elégnek.

A helyzet az, hogy azért van segítség. A dokumentációban is vannak hasznos olvasnivalók. Aki a nyelvi akadályokat nem tudja leküzdeni, annak nehezebb dolga lehet, de még angol tudással is vadászni kell az információkat. Nem beszélve a hibaüzenetekről, amik a fordítás közben jönnek elő.

A következőkben a több PHP verzió használatához szükséges előkészületeket mutatom be, aminek első lépése a PHP telepítése forráskódból. Igyekszem a hibák kiküszöbölésére is világos választ adni, ám akik itt kapcsolódnak be a témába és nem az előző fejezetek alatt elkészített rendszert használják, azoknál a hibák eltérők lehetnek. Valamint az eltérő telepítési sorrend is befolyásolhatja a felmerülő problémákat és azok felbukkanásának idejét. Ezért javaslom a teljes fejezet elolvasását, mivel ami hiba nem fordul már elő a harmadik verziónál, az elsőnél talán már előfordult.

Fogalmak

Mindenek előtt néhány fogalmat szeretnék bevezetni, aminek részletes bemutatására és elemzésére itt nem vállalkoznék. De mégis legyen némi támpont a lehetőségekről és hogy miről is "beszélek".

PHP modulként

A PHP-t telepíthetjük úgymond modulként egy webszerverbe. Ez annyit jelent, hogy egy speciális modulfájlként beépül a szerverbe, ami képes lesz PHP szkripteket futtatni. Rendszerint egy konkrét verzióját. Azt viszont hatékonyabban tudja kezelni. A szerver indulásakor betöltődik a modul és annak beállításai.

A webszerver egy bizonyos felhasználó neve alatt fut, így a PHP szintén. Ami pedig egy igazi jogosultsági útvesztőhöz vezet zsákutcával.

PHP CGI-ként

Ezzel a megoldással a PHP nem épül be a webszerverbe, de hagyja magát megszólítani. Valahányszor betöltünk egy oldalt, minden alkalommal kikeresi a beállításokat. Ami sok állítgatás közben még hasznos is, de nyilván valamivel lassabb választ eredményez.

Jó hír, hogy ezzel már megoldható, hogy különböző oldalakat más-más felhasználóval lehessen futtatni. Nem következik közvetlenül a CGI módszerből a többfelhasználós alkalmazás, de lehetőséget ad egyéb eszközök használatára.

FastCGI

A nevéből sejthető, hogy gyors. Legalábbis gyorsabb az eredeti CGI-nál. A PHP telepítése nem különbözik, csak például az Apache szerver tudja a mod_fastcgi modullal megszólítani a PHP-t.

FCGID

Még szintén a CGI vonalon, egy újabb implementáció. A 2.4-es Apache webszerverben például csak ezt lehet használni. Persze ami újabb, nem feltétlenül mindig jobb. Bizonyos okokból kifolyólag sokan továbbra is a FastCGI modulra esküsznek.

suPHP

Szintén egy modul, ami képes különböző felhasználók nevében futtatni a PHP-t. Ebben az esetben a PHP szkriptek a fájl tulajdonosának nevében futhatnak. Elég régi modul. És nem is nagyon javasolják, de van.

suEXEC

Ezzel tetszőleges felhasználó nevében lehet futtatni CGI szkripteket. Ennél fogva a PHP-t is, ha CGI-ként fut. Még az Apache dokumentáció is felhívja a figyelmet, hogy nem javasolt használni. Persze egy otthoni tesztkörnyezetben sok bajt nem okozhat

FPM

FastCGI Process Manager. Tehát még mindig ott tartunk, hogy valamiféle CGI megoldást használunk. Viszont egy újfajta megközelítésben, ahol a webszerver egy adott TCP porton vagy socket fájlon keresztül kommunikál az FPM-mel.

Úgynevezett "pool"-okat definiál, amikre egyedi beállítások szabhatók. Beleértve bizonyos biztonsági opciókat is. A pool kap egy socket fájlt, vagy IP-port párost, és a szerver ennek ismeretében kéri tőle PHP fájlok futtatását a pool-ban meghatározott felhasználó nevében.

Felfoghatjuk a "pool"-t úgy, mint a beállítások egy gyűjteményét. Valamiféle kategóriát. A webszerver pedig valamelyik gyűjteményre hivatkozik.

Általában a leírások ezt a FastCGI modul használatával mutatják be, de használható FCGI-vel is. Utóbbi viszont alapesetben csak a socket-es megoldást támogatja. Apache 2.4-ben viszont már munkába fogható egy proxy modul is a TCP kapcsolathoz.

Az 5.3.3-as PHP-tól kezdve beépített modul, de elkészült az 5.2-es verzióhoz is az FPM.

Telepítés Debian tárolóból

Az eddigiekhez hasonlóan most is csak megemlítem a tárolóból való telepítést. Nagyon egyszerű, csak ugye nem élvezhetnénk azt az előnyt, hogy oda és olyan PHP-t telepítünk, ahova akarjuk és amilyent csak akarunk.

Tehát parancssorba a következőt kellene root joggal írni:

apt-get install php5 libapache2-mod-php5

Egyébként a php különböző moduljait is fel lehet tenni ezzel a módszerrel. Sőt, még egy webes alkalmazásokat is, ami nagyon kényelmes. De ezek mindig egy konkrét verziójú modulok és alkalmazások.

Van egy lehetőség, amivel rá lehet venni a Debian -t, hogy a legújabb PHP-t lehessen feltelepíteni. Ehhez olyan tárolót kell választani, amiben fent vannak a legújabb verziók. Ilyen a "dotdeb". A tároló beüzemelését röviden és érthetően leírják a Dotdeb: Instructions oldalon, így ezt én már nem teszem meg.

Persze jelenleg itt is még az eggyel korábbi verzió található csak meg. Nyilván idő kell, amíg egy új verzió kikerül. Amit sok esetben meg is lehet várni.

Telepítés forráskódból

Lassan, de biztosan elértünk a forráskódból fordításhoz, ami ennek a fejezetnek a fő témája. A jelenlegi legújabb verziókkal dolgozom, de ha kijön az 5.4 vagy 5.3 újabb javított verziója, nyugodtan lehet azt a verziót is használni. Ügyelve a megváltozott útvonalakra.

Fordítás általános menete

A fordítás ugyanúgy működik, ahogy az az Apache és a MySQL 5.1 telepítésénél is történt.

  • Tehát letöltjük a PHP megfelelő verzióját wget-tel.
  • Megnézzük, hogy milyen opciói vannak. Mindezt a ./configure --help utasítással.
  • Tanulmányozzuk, hogy melyik mit eredményez. Melyik modul mire jó. Ebben segít a Google is.
  • Kiválasztjuk, hogy mely modulokra és beállításokra van szükségünk.
  • Lefuttatjuk a megfelelően paraméterezett "configure" programot.
  • Kezeljük a hibákat. Telepítjük a hiányzó programkönyvtárakat Debian-ra.
  • Futtatjuk a "make" parancsot, amivel megtörténik a PHP fordítása.
  • Futtatjuk a "make install" parancsot, amivel helyére kerül a PHP.
  • Nagyon boldogok vagyunk.

Ez után nézzük konkrétan is a választott verziókat! A legtöbb hiba az első alkalommal már előfordul, amit javítunk. Így a további verziók már problémamentesebbek lesznek.

Előbb hamar szerezzünk root jogot.

sudo su

Vagy su - root, ha nem elérhető a "sudo" és van a root usernek jelszava.

PHP 5.4.14 telepítése modulként

Letöltés

Töltsük le a PHP 5.4.14-es verzióját a "/opt/php/" mappába, majd tömörítsük ki és lépjünk is be a mappába! A Downloads oldalon az aktuális stabil verziót kiválasztva megtaláljuk a tükörszervereket listázó oldalt. A legtetején a magyarral. Annak url-jét írjuk a wget után.

mkdir /opt/php
cd /opt/php/
wget http://hu1.php.net/get/php-5.4.14.tar.gz/from/this/mirror -O php-5.4.14.tar.gz
tar xf php-5.4.14.tar.gz
cd php-5.4.14
Konfigurálás

Mivel már igen sok paramétert használunk, készítsünk egy külön konfigurációs fájlt: Elég lesz majd csak azt futtatni.

./configure \
--prefix=/opt/php/5.4.14 \
--with-apxs2=/opt/apache/2.4/bin/apxs \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-fpm \
--enable-bcmath \
--enable-calendar \
--with-curl \
--with-curlwrappers \
--enable-exif \
--enable-ftp \
--with-gd \
--enable-gd-native-ttf \
--with-gmp \
--with-mhash \
--with-openssl \
--with-kerberos \
--with-imap \
--with-imap-ssl \
--enable-intl \
--enable-mbstring \
--with-mcrypt \
--with-pspell \
--with-xsl \
--enable-zip \
--with-pear

Ha valaki nem szeretné begépelni, letöltheti a következő módon:

wget /sites/default/files/conf-php54-apache24.sh_.txt -O conf-php54-apache24

Mielőtt elindítjuk, néhány magyarázat a paraméterekről:

  • --prefix: A telepítési könyvtár. A verziónak megfelelő könyvtárat kapja, mert így könnyen fel lehet tenni próbaképpen bármely új verziót. Így átlátható és kezelhető lesz a könyvtárstruktúra.
  • --with-apxs2: A telepített Apache szerver egy szkriptje, aminek segítségével elkészül majd a PHP modulfájl ( libphp5.so )
  • --with-mysql: Alapértelmezetten nincs MySQL támogatás a PHP-ben, ha fordításkor nem kérjük. Itt a MySQL telepítési könyvtárát kellene megadni, vagy jelen esetben a "mysqlnd" értéket, ami a "MySQL Native Driver" -t jelenti. PHP 5.3-tól van erre lehetőség. A mysqlnd extra funkciókat is ad például a MySQLi-ben.
  • --with-mysqli: MySQLi támogatás engedélyezése. Ma már az eredeti "mysql" függvények használata nem javasolt. Jelenleg szintén a natív dirvert használjuk. Egyébként a megfelelő mysql verzió "mysql_config" szkriptjének útvonalát kellene megadni itt.
  • --with-pdo-mysql: A PDO MySQL támogatásának engedélyezése. Objektumorientált környezetben többféle adatbázissal lehet dolgozni PDO-n keresztül. Most elég a MySQL.
  • --enable-fpm: A "FastCGI Process Manager" engedélyezése. Ez még jól jön majd.
  • --enable-bcmath: Tetszőleges pontosságú és méretű "lebegőpontos" számokkal tud dolgozni.
  • --enable-calendar: Calendar modul engedélyezése. Különböző fajta naptárak között tud konvertálni.
  • --with-curl: cURL engedélyezése, amivel HTTP kéréseket lehet küldeni. És így akár programból bejelentkezni egy weboldalra, fejléceket kezelni. Ez egy fontos eszköz, így mindenképp javaslom a befordítását.
  • --with-curlwrappers: Lehetővé teszi például file_get_contents függvény használatát cURL modulon keresztül.
  • --enable-exif: "Exchangeable image information" modul engedélyezése. Lehetővé teszi a képek metaadatainak olvasását és kiterjesztéstől függetlenül tudja megmondani, hogy egy kép tényleg a várt formátumú-e.
  • --enable-ftp: FTP függvények engedélyezése
  • --with-gd: GD modul engedélyezése a képkezeléshez. Ez az alap képkezelő eszköztára a PHP-nek.
  • --with-gmp: "GNU Multiple Precision" függvények engedélyezése. Hasonló a "BC Math"-hoz. Nagy számokkal lehet dolgozni, amit önmagában a PHP nem volna képes kezelni.
  • --with-mhash: Elavult modul, amit felváltott a beépített "hash" modul az 5.1.2-ben. Ettől még a régi alkalmazásokkal való kompatibilitás végett jó, ha elérhető.
  • --with-openssl: SSL támogatása például cURL kérések esetén.
  • --with-kerberos: Egyfajta hitelesítési protokoll. Az IMAP modul engedélyezése miatt szükséges.
  • --with-imap: IMAP modul engedélyezése.
  • --with-imap-ssl: SSL támogatás az IMAP modulban.
  • --enable-intl: Különböző adatok formázását teszi lehetővé országtól/nyelvtől függően. Például dátumok, számok, pénznem megjelenítését segíti. Ezen kívül több hasznos eszközt nyújt még szövegek kezelésére, összehasonlítására, rendezésére.
  • --enable-mbstring: Engedélyezi az "mb_*" függvényeket a nem egy bájton tárolt karakterek kezelésére. Lehetőség van az eredeti "mail", "strlen", stb... függvények működésének felülbírálására is. Hasznos, ha olyan alkalmazást használunk, ami nem használta az "mb_" függvényeket és nem szeretnénk az alkalmazást átírni. Ugyanakkor én óvatosan bánnék ezzel. Ugyanis előfordulhat, hogy bizonyos esetekben szándékosan használjuk a hagyományos függvényeket.
  • --with-mcrypt: Titkosítási eljárások alkalmazását teszi lehetővé az "mcrypt_*" függvényeken keresztül.
  • --with-pspell: Helyesírás-ellenőrzésre használható a Pspell modul.
  • --with-xsl: Ez egy XML-en alapuló sablonkezelést tesz lehetővé.
  • --enable-zip: ZIP archívumok kezelését teszi lehetővé
  • --with-pear: A PEAR a "PHP Extension and Application Repository" rövidítése. Azaz hasznos osztálykönyvtárak gyűjteménye, amik nem közvetlenül részei a PHP-nek.

Ha nem érdekel a hibalista és megoldásuk, ugorhatsz a szükséges könyvtárak telepítéséhez: Telepítés

Adjunk a saját configure szkriptnek futtatási jogot!

chmod +x conf-php54-apache24

Majd futtassuk is

./conf-php54-apache24

A konfigurálás le fog állni hibával.

error: xml2-config not found. Please check your libxml2 installation

A megoldás, hogy feltelepítjük a libxml2-dev csomagot

apt-get install libxml2-dev

Próbáljuk újra a konfigurálást! Megint leáll majd hibával.

error: Please reinstall the libcurl distribution -
    easy.h should be in <curl-dir>/include/curl/

Ez a curl programkönyvtár miatt van, ami még nincs telepítve. Telepítsük:

apt-get install libcurl4-openssl-dev

Megerősítést fog kérni a telepítéshez. Üssünk ENTER-t, majd folytathatjuk egy újabb konfigurálás próbával. Persze megint leáll hibával:

error: png.h not found

Telepítsük a libpng-dev könyvtárat!

apt-get install libpng-dev

Még ekkor is jönni fog egy ilyen hibaüzenet:

error: Unable to locate gmp.h

Megoldás a libgmp3-dev feltelepítése

apt-get install libgmp3-dev

Ezt követően a következő hibaüzenet fogad:

error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing. This should not happen. Check config.log for additional information.

Ez az "imap" modul engedélyezése miatt jön elő. A megoldása a libc kliens telepítése. A hibaüzenet nem mondja meg a konkrét problémát, de google-ben keresgélve rá lehet lelni megoldásokra

apt-get install libc-client2007e-dev

Most a hiba:

error: Unable to detect ICU prefix or no failed. Please verify ICU install prefix and make sure icu-config works.

Az "intl" modul használná az ICU-t, ami nem egy női becenév itt, hanem egy programkönyvtár. Tegyük fel:

apt-get install libicu-dev

Következő hiba:

error: mcrypt.h not found. Please reinstall libmcrypt.

Most az mcrypt modulnak kell a hozzá tartozó könyvtár.

apt-get install libmcrypt-dev

Viszont a pspell könyvtárat sem telepítettük, ezért a következő hibaüzenet fogad:

error: Cannot find pspell

Telepítése:

apt-get install libpspell-dev

XSLT hiányára utaló hibaüzenet következik:

error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution

Telepítés:

apt-get install libxslt-dev

És jó hír, hogy ez volt az utolsó hibaüzenet. A konfigurálás sikeres volt. Tehát tulajdonképpen megúszhattuk volna rögtön az elején a következő telepítéssel:

apt-get install libxml2-dev libcurl4-openssl-dev libpng-dev libgmp3-dev libc-client2007e-dev libicu-dev libmcrypt-dev libpspell-dev libxslt-dev

De a lényeg, hogy az ember először nem tudja, pontosan miket kell telepítenie. Pedig a dokumentációban mindig le vannak írva a függőségek, de nem feltétlenül a Debian csomagnév.

Fordítás

Most pedig jöhet a fordítás. Ne felejtsük el a fordítást naplózással tenni a következő módon:

make 2>make.log

Így a make.log fájlba bekerülnek a hibaüzenetek. Ha a végén kiírja, hogy "Build complete", akkor sikeres volt a fordítás. Habár lesznek "warning" üzenetek a log-ban. Jöhet a telepítés, ha minden oké:

make install

Bár nem kötelező, de hogy legyen egy alap "php.ini"-nk, másoljuk át a "php.ini-development" fájlt a most telepített php "lib" könyvtárába:

cp php.ini-development ../5.4.14/lib/php.ini

Volna egy "php.ini-production" is, de az olyan beállításokat tartalmaz, amit inkább éles környezetben javasolt használni. Amikor például többek között a hibaüzenetek elrejtése, naplózása és nem a megjelenítése a cél.

Tegyünk egy egyszerű php-t a gyökérkönyvtárba, ami csak a phpinfo() függvényt hívja meg!

nano /opt/apache/2.4/htdocs/index.php

Tartalma: <?php phpinfo();

Most egy kis Apache beállítás következik. A "/opt/apache/2.4/conf/httpd.conf" fájlban keressük a következő részt:

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

Ez a rész felel azért, hogy ha fájlnevet nem írunk az útvonal után, akkor alapértelmezetten mely fájlokat keresse. Csak az index.html van benne. Adjuk hozzá az index.php-t is!

<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

Számít a sorrend. Mert ha mindegyik fájl jelen van a mappában, akkor az első töltődik be.

"nano" szerkesztőben a fenti részre keresni a CTRL+W billentyűkombinációval lehet a "DirectoryIndex" kifejezést beírva.

Most pedig még meg kell mondani a szervernek, hogy mely fájlokat futtassa PHP-ként. Ehhez a httpd.conf végére a következőt gépeljük be:

<FilesMatch "\.php$">
   SetHandler application/x-httpd-php
</FilesMatch>

Így reguláris kifejezéssel adható meg, hogy csak a ".php"-re végződő nevű fájlokat kezelje PHP-ként. Most elindítva a szervert a korábban beállított IP-n vagy domainen elérhető a PHP fájl és megjelenik phpinfo() függvény kimenete.

Szerver indítása

/opt/apache/2.4/bin/apachectl start

Az előző fejezetek beállításai szerint a "http://192.168.56.2/index.php" vagy az "http://a24.vm1/index.php" címen lesz elérhető a fájl.

phpinfo 5.4.14

Ám lejjebb görgetve a hibaüzenet is megjelenik:

Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /opt/apache/2.4/htdocs/index.php on line 1

Nem tudja a PHP, hogy melyik időzónát szeretnénk használni alapértelmezetten. Ezt meg kell mondani neki. A php.ini-ben a "date.timezone" értékét kell "Europe/Budapest" -re állítani. Majd újraindítani a szervert.

nano /opt/php/5.4.14/lib/php.ini

Ezt:
;date.timezone =
kell lecserélni erre:
date.timezone = Europe/Budapest
Majd újraindítani a szervert:
/opt/apache/2.4/bin/apachectl restart

Előfordulhat, hogy a Google Chrome böngésző inkább keresni akar a beírt címre. Ilyenkor a webcímsor alatt megjelenő figyelmeztető üzenetben található linkre kell kattintani, hogy megerősítsük szándékunkat.

Most gyakorlatilag ugyanezt el kell végezni az Apache 2.2 esetén is. Ehhez a konfigurációs fájl egyetlen sorban tér csak el a 2.4-esétől. Az "apxs" útvonalában. Mivel itt már a 2.4-esét kell megadni. Csak a szám változik, semmi más. Ennek ellenére ezt is letölthetővé tettem:

wget /sites/default/files/conf-php54-apache22.sh_.txt -O conf-php54-apache22
chmod +x conf-php54-apache22
make clean
./conf-php54-apache22
make 2>make.log
make install

Fontos a "make clean" futtatása, hogy tiszta lappal induljon a konfiguráció már a másik webszerverhez.

Az httpd.conf beállítása megegyezik az Apache 2.4 httpd.conf-jának beállításával. Másoljuk az index.php-t a 2.2-es Apache gyökérkönyvtárába és indítsuk újra a szervert. A phpinfo kimenete az előzőhöz hasonló lesz.

PHP 5.4.14 telepítése CGI-ként

A CGI-ként fordítás nem jelentene mást, mint "--with-apxs2" opció elhagyását. Viszont mivel a "php-cgi" bináris így is létrejön a PHP "bin" könyvtárában, nem szükséges egy harmadik fordítás is. Ezzel tehát meglepően gyorsan végeztünk is.

PHP 5.3.24 telepítése CGI-ként

Az 5.3 telepítésénél ugyanazt kell végigjátszani, mint amit az 5.4-nél leírtam. A különbség itt a "--with-apxs2" opció elhagyása lesz, illetve új telepítési könyvtárat kell választani.Vagyis a "--prefix" lesz itt "/opt/php/5.3.24" és vissza kell lépnünk a "/opt/php" könyvtárba, ahova letöltjük a forrásfájlt. Az 5.4-es verzióval ellentétben, itt viszont nem jön létre a "php-cgi" bináris, ha az "--enable-fpm" opciót bekapcsoljuk. Ezért először fordítsuk enélkül, majd fpm-mel is. Nem lenne erre szükség, ha nem akarnám majd mindkettőt bemutatni. Mivel a konfigurációt végző fájlokat szintén elérhetővé tettem, csak a következőt kell futtatni:

cd /opt/php
wget http://hu1.php.net/get/php-5.3.24.tar.gz/from/this/mirror -O php-5.3.24.tar.gz
tar xf php-5.3.24.tar.gz
cd /opt/php/php-5.3.24

wget /sites/default/files/conf-php53-cgi.sh_.txt -O conf-php53-cgi
chmod +x conf-php53-cgi
./conf-php53-cgi
make 2>make.log
make install

wget /sites/default/files/conf-php53.sh_.txt -O conf-php53
chmod +x conf-php53
./conf-php53
make 2>make.log
make install

cp php.ini-development ../5.3.24/lib/php.ini
nano ../5.3.24/lib/php.ini

Majd a "date.timezone" -t itt is be kell állítani. Hogy működik-e a php-cgi, azt letesztelhetjük:

cd /opt/php/5.3.24/bin
./php-cgi

ENTER után vár a php forráskódra. Írjuk be:

<?php echo "teszt\n";

A balra nyillal nem lehet ilyenkor visszalépni a karakterek közt, csak visszatörölni.

Majd nyomjunk egy CTRL+D billentyűkombinációt! Az eredmény:

X-Powered-By: PHP/5.3.24
Content-type: text/html

teszt

A webes beüzemelése egy következő cikk témája lesz.

PHP 5.2.17 telepítése CGI-ként

Az 5.2-es verziót már csak a PHP múzeumból lehet beszerezni. Illetve a "Releases" oldalról elérhető a linkje. A hozzá szükséges config szkript nagyon hasonló lesz az előzőekhez, ám néhány paraméter mégis változik.

  • Az 5.2-es verzióban még nem volt MySQL Native Driver, így a telepített mysql útvonalát kell megadni a "--with-mysql" és a "--with-pdo-mysql" paramétereiben. Valójában nem a szerver, hanem a kliens a lényeg. Ha szerver nincs is telepítve, de a "libmysqlclient-dev" könyvtár igen, akkor annak útvonalát kell megadni. Továbbá a "--with-mysqli" paraméternek a "mysql_config" útvonalát kell megadni.
  • Nincs beépített FPM, ezért nincs "--enable-fpm" kapcsolója, de van "--enable-fastcgi" és "--enable-force-cgi-redirect".
  • Nincs "intl" modul.

A szkript a következő:

#!/bin/sh

./configure \
--prefix=/opt/php/5.2.17 \
--with-mysql=/opt/mysql/5.1 \
--with-mysqli=/opt/mysql/5.1/bin/mysql_config \
--with-pdo-mysql=/opt/mysql/5.1 \
--enable-fastcgi \
--enable-force-cgi-redirect \
--enable-bcmath \
--enable-calendar \
--with-curl \
--with-curlwrappers \
--enable-exif \
--enable-ftp \
--with-gd \
--enable-gd-native-ttf \
--with-gmp \
--with-mhash \
--with-openssl \
--with-kerberos \
--with-imap \
--with-imap-ssl \
--enable-mbstring \
--with-mcrypt \
--with-pspell \
--with-xsl \
--enable-zip \
--with-pear

Feltettem ezt is letöltésre, így a következőképpen kellene telepíteni:

cd /opt/php
wget http://museum.php.net/php5/php-5.2.17.tar.gz -O php-5.2.17.tar.gz
tar xf php-5.2.17.tar.gz
cd php-5.2.17
wget /sites/default/files/conf-php52.sh_.txt -O conf-php52
chmod +x ./conf-php52
./conf-php52
make 2>make.log
make install

Azért nem lesz ilyen egyszerű. A config szkript futtatásakor a következő hibába botlunk:

error: Please reinstall libmhash - I cannot find mhash.h

Az 5.2-es php-nak még erre a könyvtárra is szüksége volt. Tehát tegyük fel:

apt-get install libmhash-dev

Majd mehet a folytatás. Mivel már jó eséllyel nem ír semmilyen hibát, lehet futtatni a make, majd make install utasítást.

Szintén van pár sablon php.ini. Ezek a "php.ini-dist" és a "php.ini-recommended". A "dist" végződésűt másoljuk az 5.2-es php "lib" könyvtárába. Ez felel meg az 5.3 és 5.3 "development" php.ini fájljának.

cp php.ini-dist ../5.2.17/lib/php.ini

Majd szintén állítsuk be a fentiek alapján a "date.timezone" -t

Az 5.3-as PHP-nál alkalmazott tesztet itt is próbálhatjuk.

cd /opt/php/5.2.17/bin
./php-cgi

ENTER után vár a php forráskódra. Írjuk be:

<?php echo "teszt\n";

Majd nyomjunk egy CTRL+D billentyűkombinációt! Az eredmény:

X-Powered-By: PHP/5.2.17
Content-type: text/html

teszt

Mivel most is sok módosítást végeztünk, exportáljuk a gépet wtk-vm1-v5 néven!

Összefoglaló

Ebben a terjedelmes fejezetben telepítettünk 3 PHP verziót. Megismerkedtünk a modulként és CGI-ként telepítéssel is, valamint a konfiguráláshoz és fordításhoz szükséges függőségeket is telepítettük felismerve a hibaüzeneteket.

Némi Apache konfigurálásra is sor került, hogy a php kiterjesztésű fájlok átmenjenek az értelmezőn és a php kiterjesztésű index fájlt is megtalálja a szerver, ha fájlnevet nem, csak a könyvtár útvonalát írjuk a böngészőbe.

Az 5.4-es PHP már mindkét webszerverben használható, de a többire még nem került sor. Ez egy későbbi fejezet témája lesz, ahol a most telepített PHP-k "php-cgi" programjait használjuk fel az Apache webszerver beállításaiban, hogy bizonyos körülmények között tetszőleges verzióját használhassuk a PHP-nek.

Források

Kategóriák: 
Megosztás/Mentés