7. Fejezet. PECL kiterjesztések telepítése

Tartalom
Bevezetés a PECL telepítésébe
PECL kiterjesztések letöltése
PECL Windows felhasználók részére
Megosztott PECL kiterjesztések fordítása PEAR-rel
Megosztott PECL kiterjesztések fordítása phpize-vel
PECL kiterjesztések fordítása PHP-be statikusan

Bevezetés a PECL telepítésébe

A PHP kiterjesztések számos módon telepíthetőek. A PECL PHP kiterjesztések gyűjteménye, amelyek a PEAR struktúrában találhatóak meg. A következő részek bemutatják ezen kiterjesztések telepítésének módját.

Ezek az utasítások /your/phpsrcdir/-rel jelölik azt a könyvtárat, ahol a PHP forráskód található, extname-el pedig a PECL kiterjesztés nevét. Ezek az utasítások feltételezik a pear parancs ismeretét.

A megosztott kiterjesztések a php.ini-ben az extension direktíva használatával telepíthetők. Lásd még az extensions_dir direktívát és a dl() függvényt. A továbbiakban leírt telepítési módok nem konfigurálják automatikusan a PHP-t, hogy betöltse ezeket a kiterjesztéseket, ezt kézzel kell megtenni.

PHP modulok fordításánál fontos a szükséges eszközök (autoconf, automake, libtool, stb.) megfelelő verziójainak használata. Olvasd el az Anonymous CVS útmutatót, hogy többet megtudj a szükséges eszközökről és verziókról.

PECL kiterjesztések letöltése

Számos módja van a PECL kiterjesztések letöltésének, mint például:

PECL Windows felhasználók részére

Mint bármilyen más PHP kiterjesztés DLL-t, a telepítéshez tedd a PECL kiterjesztés DLL-eket az extension_dir könyvtárba és hivatkozz rá a php.ini-ben. Például:

extension=php_extname.dll

Ezután indítsd újra a webszervert.

Megosztott PECL kiterjesztések fordítása PEAR-rel

A PEAR-rel könnyen készíthetsz megosztott PHP kiterjesztéseket a pear parancs használatával. Hajtsd végre a következőt:

$ pear install extname

Ez letölti az extname kiterjesztés forrását, majd lefordítja. Ennek eredménye egy extname.so állomány, amelyet aztán beírhatsz a php.ini-be.

Amennyiben a rendszer preferred_state (előnyben részesített állapot) változója magasabbra van állítva, mint amilyen az extname-ből rendelkezésre áll, például ha stabilra van állítva de a kiterjesztés még csak béta állapotban van, vagy módosítsd a preferred_state-et a pear config-set paranccsal, vagy pedig add meg a PECL kiterjesztés egy bizonyos verziószámát, valahogy így:

$ pear install extname-0.1.1

A pear minden esetben a extension-dir-be fogja másolni az extname.so-t. A php.ini-t ennek megfelelően állítsd be.

Megosztott PECL kiterjesztések fordítása phpize-vel

Ha a pear használata nem lehetséges, mint például megosztott PECL kiterjesztések CVS-ből történő fordítása, egy megosztott kiterjesztés létrehozása kézzel is elvégezhető a phpize paranccsal. A pear parancs alapvetően megteszi ezt, de kézzel is elvégezhető. Feltéve, hogy a forrásfájl neve extname.tgz, amely az aktuális könyvtárba lett letöltve, tekintsd a következőt:

$ pear download extname
$ gzip -d < extname.tgz | tar -xvf -
$ cd extname
$ phpize
$ ./configure && make

Ha minden rendben zajlik, akkor ez létrehoz egy extname.so állományt, és az extname/-en belül található modules/ és/vagy .libs/ könyvtárba teszi. Helyezd ezt a megosztott kiterjesztést (extname.so) a PHP kiterjesztés könyvtárába, és állítsd be a php.ini-t megfelelően.

PECL kiterjesztések fordítása PHP-be statikusan

Ha szeretnéd a kiterjesztést a PHP-be statikusan belefordítani, tedd a kiterjesztés forrását a PHP forrásában található ext/ könyvtárba. Például:

$ cd /your/phpsrcdir/ext
$ pear download extname
$ gzip -d < extname.tgz | tar -xvf -
$ mv extname-x.x.x extname
$ rm package.xml

Ez az alábbi könyvtárat eredményezi:

/your/phpsrcdir/ext/extname

Most fordítsd a PHP a szokásos módon:

$ cd /your/phpsrcdir 
$ ./buildconf
$ ./configure --help
$ ./configure --with-extname --enable-someotherext --with-foobar
$ make
$ make install

Az, hogy az --enable-extname vagy a --with-extname alakot kell használni, függ a kiterjesztéstől. Tipikusan olyan kiterjesztések esetén, amelyek nem igényelnek külső könyvtárakat, az --enable-t kell használni. Hogy megbizonyosodhass róla, a buldconf után futtasd ezt:

$ ./configure --help | grep extname