Installieren Sie PECL-Pakete auf Ubuntu

32

Ich habe es 100 Mal ausprobiert. Ich bin wirklich neu in Ubuntu und endete mit einer Reihe von Fehlern, die ich nicht einmal verstehe. Kann mir bitte jemand helfen?

Folgendes habe ich getan:

  1. Ich habe PHP installiert
  2. Ich habe libcurl dann php5-dev installiert
  3. Ich habe versucht, die PECL-Erweiterung zu installieren und es heißt PHPIZEnicht gefunden.
maniteja
quelle
Willkommen bei Ask Ubuntu. Können Sie uns bitte den vollständigen Befehl, den Sie ausgegeben haben, und die vollständige Fehlermeldung geben. Bearbeiten Sie Ihren Fragetext, um die Informationen hinzuzufügen.
MadMike

Antworten:

48

Zunächst müssen Sie PEAR installieren über apt-getdas notwendige Paket und Verteilungssystem zu bekommen , dass beide PEARund PECLVerwendung. Geben Sie an einer Shell-Eingabeaufforderung Folgendes ein:

sudo apt-get install php-pear

Sie werden aufgefordert, die Installation zu bestätigen. Drücken Sie einfach "y" und geben Sie ein. Wenn alles gut geht, sollten Sie das php-pear-Paket herunterladen und installieren.

Jetzt müssen Sie das Paket php5-dev installieren, um die erforderlichen PHP5-Quelldateien zum Kompilieren zusätzlicher Module zu erhalten. Geben Sie an einer Shell-Eingabeaufforderung Folgendes ein:

sudo apt-get install php5-dev

Wenn Sie das php5-dev-Paket nicht installieren und versuchen, eine PECL-Erweiterung mithilfe von "pear install" zu installieren, wird die folgende Fehlermeldung angezeigt:

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

Für die Erweiterung PECL_HTTP muss ein zusätzliches Abhängigkeitspaket installiert werden. Sie können dies wahrscheinlich für andere Erweiterungen überspringen:

sudo apt-get install libcurl3-openssl-dev

Jetzt können wir endlich die Erweiterung installieren. Geben Sie an einer Shell-Eingabeaufforderung Folgendes ein, aber ersetzen Sie "pecl_http" durch den Namen der zu installierenden PECL-Erweiterung:

sudo pecl install pecl_http

Das Installationsprogramm fragt Sie möglicherweise nach bestimmten Optionen für die zu installierende Erweiterung. Sie können wahrscheinlich einfach ein- oder mehrmals die Eingabetaste drücken, um alle Standardeinstellungen zu übernehmen, es sei denn, Sie möchten bestimmte Optionen für Ihre Implementierung festlegen. Wenn alles gut geht, sollte das Modul herunterladen, erstellen und installieren.

Sobald die Installation abgeschlossen ist, werden Sie wahrscheinlich aufgefordert, Ihrer php.ini-Datei die Zeile "extension =" hinzuzufügen. Öffnen Sie die Datei php.ini in Ihrem bevorzugten Texteditor und fügen Sie die Zeile unter dem Abschnitt "Dynamische Erweiterungen" hinzu. Unter Ubuntu scheint sich die Datei php.ini im Ordner / etc / php5 / apache2 zu befinden:

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

In diesem Beispiel wurde ich bei der Installation der Erweiterung pecl_http aufgefordert, "extension = http.so" hinzuzufügen. Nachdem die php.ini-Datei aktualisiert wurde, muss Apache neu gestartet werden, damit die neue Erweiterung geladen wird:

sudo /etc/init.d/apache2 restart 

Quelle

Maythux
quelle
Dies waren die gleichen Schritte, die ich genau befolgt habe (aus der gleichen Quelle) und die immer noch keine Freude bereiteten: / Ich bin zu Ubuntu gewechselt, nur für einige Erweiterungen, die unter Windows nicht verfügbar sind, aber das ist so verwirrend, weil ich neu darin bin.
Maniteja
1
BITTE BEACHTEN SIE: Möglicherweise müssen Sie zuerst installieren make. Einfach machensudo apt-get install make
Tomanow
5
Wenn Sie PHP7 verwenden, möchten Sie php7.0-devstattdessen das Paket:sudo apt-get install php7.0-dev
Graham Swan
4

Zusätzlich zu der Antwort von @ Ask musste ich Folgendes tun:

sudo apt-get install libpcre3-dev

vor dem Laufen, pecl install pecl_httpweil ich diesen Fehler über pcre.h:

Schwerwiegender Fehler: pcre.h: Keine solche Datei- oder Verzeichniskompilierung wurde beendet.

Anstatt die php.iniDatei zu bearbeiten , habe ich auch eine neue Datei erstellt, die pecl-http.iniim conf.dUnterverzeichnis der php.iniDatei (unter Ubuntu /etc/php5/apache2/conf.d) aufgerufen wird.

Und ich musste in drei Zeilen hinzufügen:

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

Schließlich 2.0.6konnte ich seit dieser installierten Version die http_get_request_headersFunktion nicht verwenden , sondern musste stattdessen die Namespace-Version verwenden. \http\Env::getRequestHeader() Weitere Details finden Sie hier

ps: vergiss nicht apache neu zu starten wenn du fertig bist ( service apache2 restart)

cwd
quelle
Guter Anruf; Ich wünschte, ich hätte Ihre Antwort gelesen, bevor ich mich auf die Suche nach libcre-dev machte. Ich sollte auch hinzufügen, dass ich in meinem Fall extension=json.sovor der http.soZeile hinzufügen musste , obwohl die json.iniDatei bereits enthalten war conf.d.
M1ke
1

Zusätzlich zu den Antworten von Maythux und cwd möchten Sie möglicherweise Ihre php.ini-Datei nicht bearbeiten, da diese Änderungen bei Updates möglicherweise verloren gehen.

Debian (und damit Ubuntu) behandelt PHP-Module auf die gleiche Weise wie Apache-Module. Schauen /etc/php5Sie sich an , Sie finden Verzeichnisse wie dieses:

apache2/
cli/
mods-available/

Wenn Sie hineinschauen mods-available, sehen Sie mehrere Dateien wie:

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

So aktivieren / deaktivieren Sie diese verfügbaren Mods für alle APIs (Apache, cli, cgi) Sie können nur die Befehle verwenden php5enmododer in php5dismodetwa so:

$ sudo php5enmod curl

beziehungsweise

$ sudo php5dismod curl

Diese erstellen (oder entfernen) symbolische Links zur Modulkonfigurationsdatei in apache2/conf.d/und cli/conf.d/.

Du kannst auch das sapi angeben, für das der Mod aktiviert / deaktiviert werden soll (in diesem Fall Apache):

$ sudo php5enmod -s apache2

pecl installMöglicherweise wird keine Konfigurationsdatei für raphf(und andere damit installierte Module) erstellt. Sie können sie jedoch selbst erstellen:

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

Dann schreibe in die folgenden Zeilen:

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

Die Standardpriorität ist 20. Welche Priorität Sie verwenden müssen, hängt möglicherweise vom Typ des Moduls ab. Für raphf20 scheint in Ordnung. ( Update : wenn du nach pecl_http suchst, muss es ab Version 2 nach rapfhund geladen werden propro, also setze die Priorität im mods-available/http.inito 30.)

Damit können Sie das Modul aktivieren:

$ sudo php5enmod raphf

(Hinweis: Meine Antwort hängt von Ubuntu 14.04 ab, kann aber für 13.04 auf die gleiche Weise funktionieren, siehe http://www.lornajane.net/posts/2012/managing-php-5-4-extensions-on-ubuntu )

David
quelle
1

Installieren Sie PEAR nun tagelang auf diese Weise, um es von der Quelle zu beziehen:

wget http://pear.php.net/go-pear.phar
php go-pear.phar
Anuga
quelle