Zainstaluj pakiety PECL na Ubuntu

32

Wypróbowałem to 100 razy, jestem naprawdę nowy w Ubuntu i zakończyłem błędem, którego nawet nie rozumiem, czy ktoś może mi pomóc?

Oto co zrobiłem:

  1. Zainstalowałem PHP
  2. Zainstalowałem libcurl, a następnie php5-dev
  3. Próbowałem zainstalować rozszerzenie PECL i jest napisane, że PHPIZEnie znaleziono.
maniteja
źródło
Witamy w Ask Ubuntu. Czy możesz podać nam pełne wydane polecenie i pełny komunikat o błędzie. Edytuj tekst pytania, aby dodać informacje.
MadMike,

Odpowiedzi:

48

Po pierwsze, trzeba będzie zainstalować PEAR poprzez apt-getaby uzyskać niezbędne system pakietów i dystrybucji, że zarówno PEARi PECLużytkowania. W wierszu poleceń wpisz:

sudo apt-get install php-pear

Zostaniesz poproszony o potwierdzenie instalacji. Wystarczy nacisnąć „y” i wejść. Jeśli wszystko pójdzie dobrze, powinieneś pobrać i zainstalować pakiet php-pear.

Teraz musisz zainstalować pakiet php5-dev, aby uzyskać niezbędne pliki źródłowe PHP5 do skompilowania dodatkowych modułów. Wpisz następujące polecenie w wierszu poleceń powłoki:

sudo apt-get install php5-dev

Jeśli nie zainstalujesz pakietu php5-dev i spróbujesz zainstalować rozszerzenie PECL za pomocą „pear install”, pojawi się następujący błąd:

sh: phpize: not found
ERROR: `phpize’ failed

Rozszerzenie PECL_HTTP wymaga zainstalowania dodatkowego pakietu zależności. Prawdopodobnie możesz pominąć to w przypadku innych rozszerzeń:

sudo apt-get install libcurl3-openssl-dev

Teraz jesteśmy w końcu gotowi do zainstalowania rozszerzenia. W wierszu poleceń powłoki wpisz następujące, ale zastępuj „pecl_http” instalowaną nazwą rozszerzenia PECL:

sudo pecl install pecl_http

Instalator może zapytać o niektóre opcje instalowanego rozszerzenia. Prawdopodobnie możesz po prostu nacisnąć Enter jeden lub więcej razy, aby zaakceptować wszystkie wartości domyślne, chyba że chcesz ustawić określone opcje dla swojej implementacji. Jeśli wszystko pójdzie dobrze, moduł powinien pobrać, skompilować i zainstalować.

Po zakończeniu instalacji prawdopodobnie poprosi cię o dodanie wiersza „extension =” do pliku php.ini. Otwórz plik php.ini w swoim ulubionym edytorze tekstów i dodaj wiersz pod sekcją „Rozszerzenia dynamiczne”. W Ubuntu plik php.ini wydaje się znajdować w folderze / etc / php5 / apache2:

sudo nano /etc/php5/apache2/php.ini

W tym przykładzie instalacja rozszerzenia pecl_http poprosiła mnie o dodanie „extension = http.so”. Teraz, gdy plik php.ini został zaktualizowany, Apache będzie musiał zostać zrestartowany, aby załadować nowe rozszerzenie:

sudo /etc/init.d/apache2 restart 

źródło

Maythux
źródło
były to te same kroki, które podążyłem dokładnie (z tego samego źródła) i nadal nie mam radości: / przeniosłem się do Ubuntu tylko dla niektórych rozszerzeń, które nie są dostępne w systemie Windows, ale jest to tak mylące, ponieważ jestem nowy.
maniteja
1
UWAGA: makePrzed wykonaniem tej czynności może być konieczne zainstalowanie . Po prostu zróbsudo apt-get install make
Tomanow
5
Jeśli używasz PHP7, php7.0-devzamiast tego potrzebujesz pakietu:sudo apt-get install php7.0-dev
Graham Swan
4

Oprócz odpowiedzi @ Ask musiałem też zrobić:

sudo apt-get install libpcre3-dev

przed uruchomieniem, pecl install pecl_httpponieważ otrzymywałem ten błąd dotyczący pcre.h:

błąd krytyczny: pcre.h: Żadna taka kompilacja pliku lub katalogu nie została zakończona.

Oprócz edycji php.inipliku utworzyłem nowy plik o nazwie pecl-http.iniw conf.dpodkatalogu, w którym php.iniplik się znajdował (na ubuntu /etc/php5/apache2/conf.d)

I musiałem dodać w trzech wierszach:

extension=raphf.so
extension=propro.so
extension=http.so

Wreszcie, ponieważ ta zainstalowana wersja 2.0.6nie mogła korzystać z tej http_get_request_headersfunkcji, ale zamiast tego potrzebowałem użyć wersji z przestrzenią nazw, \http\Env::getRequestHeader() zobacz więcej szczegółów tutaj

ps: nie zapomnij zrestartować apache po zakończeniu ( service apache2 restart)

cwd
źródło
Dobra decyzja; chciałbym przeczytać twoją odpowiedź, zanim wyruszyłem na polowanie na libcre-dev. Powinienem również dodać, że w moim przypadku musiałem dodać extension=json.soprzed http.sowierszem, mimo że json.iniplik już zawiera conf.d.
M1ke,
1

Oprócz odpowiedzi Maythux i cwd możesz nie chcieć edytować pliku php.ini, ponieważ zmiany te mogą zostać utracone podczas aktualizacji.

Debian (a zatem Ubuntu) obsługuje moduły php w taki sam sposób jak moduły apache. Spójrz /etc/php5, znajdziesz takie katalogi:

apache2/
cli/
mods-available/

Kiedy spojrzysz w głąb mods-available, zobaczysz kilka plików takich jak:

curl.ini
gd.ini
json.ini
mysql.ini
…

Aby włączyć / wyłączyć te dostępne mody dla wszystkich interfejsów API (apache, cli, cgi), możesz po prostu użyć poleceń php5enmodlub w ten php5dismodsposób:

$ sudo php5enmod curl

odpowiednio

$ sudo php5dismod curl

Spowoduje to utworzenie (lub usunięcie) dowiązań symbolicznych do pliku konfiguracyjnego modułu w apache2/conf.d/i cli/conf.d/.

Możesz także określić sapi, aby włączyć / wyłączyć mod (apache w tym przypadku):

$ sudo php5enmod -s apache2

pecl installmoże nie utworzyć pliku konfiguracyjnego dla raphf(i innych zainstalowanych z nim modułów), ale możesz go utworzyć samodzielnie:

$ sudo touch /etc/php5/mods-available/raphf.ini

Następnie napisz w następujących wierszach:

; configuration for php raphf module
; priority=20
extension=raphf.so

Domyślny priorytet to 20. Może to zależeć od typu modułu, którego priorytetu należy użyć. Na raphf20 wydaje się w porządku. ( Aktualizacja : jeśli szukasz pecl_http, począwszy od wersji 2 to musi być załadowany po rapfhi proprotak ustawić priorytet w mods-available/http.inicelu 30).

Dzięki temu możesz włączyć moduł:

$ sudo php5enmod raphf

(Uwaga: moja odpowiedź zależy od Ubuntu 14.04, ale może działać w jednakowy sposób dla 13.04, patrz http://www.lornajane.net/posts/2012/managing-php-5-4-extensions-on-ubuntu )

David
źródło
1

Teraz dni, zainstaluj PEAR w ten sposób, aby pobrać go ze źródła:

wget http://pear.php.net/go-pear.phar
php go-pear.phar
Anuga
źródło