Instalacja pakietu z repozytorium PEAR

W tym artykule mam zamiar pokazać, jak szybko instalować przydatne pakiety z repozytorium PEAR. Jeśli jeszcze nie posiadasz zainstalowanego repo, to zobacz jak zainstalować PEAR.

Przykładowe ropozytorium

Spróbujmy pobrać `Math_Complex’. Pakiet pozwalający operować na liczbach zespolonych. W wierszu poleceń:

[text]pear install Math_Complex[/text]

W wyniku pokazuje się [u mnie, może u Ciebie będzie inaczej]:

[text]Failed to download pear/Math_Complex within preferred state "stable", latest release is version 0.8.5, stability
"beta", use "channel://pear.php.net/Math_Complex-0.8.5" to install
Cannot initialize ‚channel://pear.php.net/Math_Complex’, invalid or missing package file
Package "channel://pear.php.net/Math_Complex" is not valid
install failed[/text]

No, jakby nie patrzeć, coś nie tak. Spokojnie, spróbujmy tak:

[text]pear install Math_Complex-0.8.5[/text]

W wyniku otrzymuję:

[text]D:\programy\wamp\bin\php\php5.2.9-2>pear install Math_Complex-0.8.5
WARNING: channel "pear.php.net" has updated its protocols, use "channel-update pear.php.net" to update
Did not download dependencies: pear/Math_TrigOp, use –alldeps or –onlyreqdeps to download automatically
pear/Math_Complex requires package "pear/Math_TrigOp" (version > 1.0)
No valid packages found
install failed[/text]

Znowu coś nie tak, ale już bliżej :). Idziemy za ciosem i robimy o co nas proszą:

[text]D:\programy\wamp\bin\php\php5.2.9-2>pear channel-update pear.php.net
Updating channel "pear.php.net"
Update of Channel "pear.php.net" succeeded[/text]

Może teraz się uda:

[text]pear install Math_Complex-0.8.5
Did not download dependencies: pear/Math_TrigOp, use –alldeps or –onlyreqdeps to download automatically
pear/Math_Complex requires package "pear/Math_TrigOp" (version > 1.0)
No valid packages found
install failed[/text]

No, niestety nie. Ale jesteśmy blisko, bo już takie polecenie załatwi sprawę:

[text]pear install –alldeps Math_Complex-0.8.5
downloading Math_Complex-0.8.5.tgz …
Starting to download Math_Complex-0.8.5.tgz (40,930 bytes)
………..done: 40,930 bytes
downloading Math_TrigOp-1.0.tgz …
Starting to download Math_TrigOp-1.0.tgz (1,613 bytes)
…done: 1,613 bytes
install ok: channel://pear.php.net/Math_TrigOp-1.0
install ok: channel://pear.php.net/Math_Complex-0.8.5[/text]

Łałałibi! Czas zatem wykorzystać nasz nowo zainstalowany pakiet.

Wykorzystanie pakietów z PEAR

Jak być może pamiętasz, zezwoliłeś na zmienę w pliku ‚php.ini’. Dzięki temu instalowane pakiety PEAR będą dostępne na twoim lokalnym serwerze, tak jakbyś je miał w każdym katalogu. Nie musisz podawać żadnej ścieżki do nich. Oto przykład, umieść go w pliku index.php w katalogu głównym twojego serwera:

[php]require_once ‚/Complex.php’;[/php]

Po uruchomieniu serwera (jeśli podczas instalacji PEAR był włączony należy go zrestartować), i wpisaniu adresu „http://localhost/index.php” zobaczysz coś takiego:

[text]Warning: require_once(Complex.php) [function.require-once]: failed to open stream: No such file or directory in F:\vhosts\mc\index.php on line 2
Fatal error: require_once() [function.require]: Failed opening required ‚Complex.php’ (include_path=’.;c:\php\includes’) in F:\vhosts\mc\index.php on line2[/text]

Co znowu?!

Konwencja nazewnicza PEAR

W PHP do wersji 5.3 nie było przestrzeni nazw. W repozytorium PEAR wprowadzono coś co pozwalało na im naśladowanie. Otóż, klasa składała się z kilku członów. Jak np. „Math_Complex”. Jednak tylko „Complex” odnosi się bezpośrednio do klasy, całość wcześniej pozwala na określenie położenia danej klasy w strukturze pakietów. Czyli Math/Complex. Zobaczmy tak:
<pre>

[php]require_once ‚Math/Complex.php’;[/php]

Dla Wampa (być może innych serwerów też)

W przypadku mojego Wampa nadal był błąd. Okazało się, że posiadam dwa pliki ‚php.ini’. Jeden w katalogu PHP, drugi w katalogu Apache. W katalogu PHP zostało dodane:

[text];***** Added by go-pear
include_path=".;D:\programy\wamp\bin\php\php5.2.9-2\pear"
;*****[/text]

W pliku `…/Apache/Apache2.2.11/bin/php.ini’ musiałem dodać taką linię ręcznie:

[text]; Windows: "\path1;\path2"
;include_path = ".;c:\php\includes"
include_path=".;D:\programy\wamp\bin\php\php5.2.9-2\pear"{[/text]

Po tej zmienie i restarcie serwera wszystko działało.

Działa. Jak miło :). Tzn, póki co nie ma błędów.

Działający przykład

Jeśli wykonałeś wszystkie wcześniejsze kroki, to już ten kod powienien się wykonać:

[php]<?php
require_once ‚Math/Complex.php’;
$oMc = new Math_Complex(12.3, 1.0);
echo "Jestem liczbą zespoloną. Moja część rzeczywista to: " .
$oMc->getReal() . ", a część urojona wynosi " . $oMc->getIm();[/php]

Powyższy kod powinien zwrócić:

[text]Jestem liczbą zespoloną. Moja część rzeczywista to: 12.3, a część urojona wynosi 1[/text]

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *