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.
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.
--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.
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:
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:
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!
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:
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.
Á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:
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:
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:
./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:
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ő:
./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:
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.
./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:
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
- [RESOLVED] configure: error: utf8_mime2text() has new signature, but U8T_CANONICAL is missing
- Installing Apache2 With PHP5 And MySQL Support On Debian Lenny (LAMP)
- php.net sok-sok oldala
- How to Add the Dotdeb Repository to Debian Squeeze
- Alkalmazásonkénti chroot PHP-FPM-mel
- WikiPedia - FastCGI
- PHP futtatása FastCGI módban
- High-performance PHP on apache httpd 2.4.x using mod_proxy_fcgi and php-fpm
- PHP: DSO vs. CGI vs. SuPHP vs. FastCGI
- suPHP vs. mod_php – When is suPHP superior?
- DSO (mod_php) vs. CGI vs. suPHP vs. FastCGI
- confusion in suPHP, suPHPexec and Apache suEXEC
- suPHP - programok futtatása felhasználóként
- suEXEC Support
- suPHP Homepage