Installer les paquets PECL sur Ubuntu

32

Je l'ai essayé 100 fois, je suis vraiment nouveau sur Ubuntu et j'ai fini avec une série d'erreurs que je ne comprends même pas. Est-ce que quelqu'un peut m'aider, s'il vous plaît?

Voici ce que j'ai fait:

  1. J'ai installé PHP
  2. J'ai installé libcurl puis php5-dev
  3. J'ai essayé d'installer l'extension PECL et il est dit PHPIZEnon trouvé.
Maniteja
la source
Bienvenue sur Ask Ubuntu. Pouvez-vous s'il vous plaît nous donner la commande complète que vous avez émise et le message d'erreur complet. Modifiez le texte de votre question pour ajouter l'information s'il vous plaît.
MadMike

Réponses:

48

Tout d' abord, vous devez installer PEAR via apt-getpour obtenir le package nécessaire et un système de distribution que les deux PEARet l' PECLutilisation. À partir d'une invite du shell, entrez:

sudo apt-get install php-pear

Vous serez invité à confirmer l'installation. Appuyez simplement sur «y» et entrez. Si tout se passe bien, vous devriez le voir télécharger et installer le paquet php-pear.

Vous devez maintenant installer le paquet php5-dev pour obtenir les fichiers sources PHP5 nécessaires à la compilation de modules supplémentaires. Entrez les informations suivantes à partir d'une invite du shell:

sudo apt-get install php5-dev

Si vous n'installez pas le paquet php5-dev et essayez d'installer une extension PECL en utilisant "pear install", vous obtiendrez l'erreur suivante:

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

L'extension PECL_HTTP nécessite l'installation d'un package de dépendance supplémentaire. Vous pouvez probablement l'ignorer pour d'autres extensions:

sudo apt-get install libcurl3-openssl-dev

Nous sommes enfin prêts à installer l’extension. À partir d'une invite du shell, entrez la commande suivante, mais remplacez «pecl_http» par le nom de l'extension PECL que vous installez:

sudo pecl install pecl_http

Le programme d'installation peut vous interroger sur certaines options spécifiques pour l'extension que vous installez. Vous pouvez probablement simplement appuyer sur Entrée une ou plusieurs fois pour accepter toutes les valeurs par défaut, sauf si vous souhaitez définir des options spécifiques pour votre implémentation. Si tout se passe bien, le module devrait télécharger, compiler et installer.

Une fois l'installation terminée, il vous sera probablement demandé d'ajouter une ligne «extension =» à votre fichier php.ini. Ouvrez le fichier php.ini dans votre éditeur de texte préféré et ajoutez la ligne sous la section intitulée «Extensions dynamiques». Sur Ubuntu, le fichier php.ini semble se trouver dans le dossier / etc / php5 / apache2:

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

Dans cet exemple, l'installation de l'extension pecl_http m'a demandé d'ajouter «extension = http.so». Maintenant que le fichier php.ini a été mis à jour, Apache devra être redémarré pour que la nouvelle extension soit chargée:

sudo /etc/init.d/apache2 restart 

la source

Maythux
la source
ce sont les mêmes étapes que j'ai suivies exactement (à partir de la même source) toujours pas de joie: / j'ai déménagé à Ubuntu juste pour certaines extensions qui ne sont pas disponibles sur Windows mais c'est tellement déroutant parce que je suis nouveau dans ce domaine.
Maniteja
1
S'IL VOUS PLAÎT NOTE: Vous devrez peut-être installer makeavant de faire cela. sudo apt-get install make
Faites
5
Si vous utilisez PHP7, vous préférerez le php7.0-devpaquet:sudo apt-get install php7.0-dev
Graham Swan
4

En plus de la réponse de @ Ask, j'avais également besoin de faire:

sudo apt-get install libpcre3-dev

avant de courir pecl install pecl_httpparce que je recevais cette erreur à propos de pcre.h:

Erreur irrécupérable: pcre.h: Aucune compilation de fichiers ou de répertoires de ce type n'est terminée.

De plus, au lieu d’éditer le php.inifichier, j’ai créé un nouveau fichier appelépecl-http.ini dans le conf.dsous - répertoire de l’emplacement du php.inifichier (sur Ubuntu /etc/php5/apache2/conf.d).

Et je devais ajouter trois lignes:

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

Enfin, depuis cette version installée, 2.0.6je ne pouvais plus utiliser lahttp_get_request_headers fonction mais devais utiliser la version namespaced, \http\Env::getRequestHeader() voir plus de détails ici

ps: n'oubliez pas de redémarrer apache lorsque vous avez terminé ( service apache2 restart)

cwd
la source
Bon appel; J'aurais aimé lire votre réponse avant de partir à la recherche de libcre-dev. Je devrais également ajouter que dans mon cas, je devais ajouter extension=json.soavant la http.soligne alors que le json.inifichier était déjà inclus dans conf.d.
M1ke
1

En plus des réponses de Maythux et de cwd, vous pourriez ne pas vouloir éditer votre fichier php.ini car ces modifications pourraient être perdues lors des mises à jour.

Debian (et donc Ubuntu) gère les modules php de la même manière que les modules apache. Regardez /etc/php5, vous trouverez des répertoires comme celui-ci:

apache2/
cli/
mods-available/

Quand vous regardez, mods-availablevous voyez plusieurs fichiers comme:

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

Pour activer / désactiver ces mods disponibles pour toutes les API (apache, cli, cgi), vous pouvez simplement utiliser les commandes php5enmodou php5dismodsimilaires:

$ sudo php5enmod curl

respectivement

$ sudo php5dismod curl

Ceux-ci créeront (ou supprimeront) des liens symboliques vers le fichier de configuration du module dans apache2/conf.d/etcli/conf.d/ .

Vous pouvez également spécifier le sapi pour activer / désactiver le mod pour (apache dans ce cas):

$ sudo php5enmod -s apache2

pecl installpeut ne pas créer de fichier de configuration pour raphf(et d’autres modules installés avec), mais vous pouvez le créer vous-même:

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

Ensuite, écrivez dans les lignes suivantes:

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

La priorité par défaut est 20. Cela peut dépendre du type de module que vous devez utiliser comme priorité. Pour raphf20 semble bien. ( Mise à jour : si vous recherchez pecl_http, à partir de la version 2, il devra être chargé après rapfhet propro, définissez donc la priorité dans le mods-available/http.inià 30.)

Avec cela, vous pouvez activer le module:

$ sudo php5enmod raphf

(Remarque: ma réponse dépend de Ubuntu 14.04 mais pourrait fonctionner de la même manière pour 13.04, voir http://www.lornajane.net/posts/2012/managing-php-5-4-extensions-on-ubuntu )

David
la source
1

De nos jours, installez PEAR de cette façon, pour l'obtenir à partir de la source:

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