web-dev-qa-db-fra.com

Installer les paquets PECL sur Ubuntu

Je l'ai essayé 100 fois, je suis vraiment nouveau sur Ubuntu et j'ai fini avec un tas 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 indique PHPIZE not found.
32
maniteja

Tout d'abord, vous devez installer PEAR via apt-get pour obtenir le package et le système de distribution nécessaires utilisés par PEAR et PECL. À partir d'une invite de 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 de 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 ce qui suit, 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 

source

43
Maythux

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

Sudo apt-get install libpcre3-dev

avant d’exécuter pecl install pecl_http car j’obtenais 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 de modifier le fichier php.ini, j’ai créé un nouveau fichier appelé pecl-http.ini dans le sous-répertoire conf.d où se trouvait le fichier php.ini (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.6, je ne pouvais pas utiliser la fonction http_get_request_headers mais je devais utiliser plutôt 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)

4
cwd

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/

Lorsque vous regardez dans mods-available, vous voyez plusieurs fichiers tels que:

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 php5enmod ou php5dismod de la manière suivante:

$ 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/ et cli/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 install pourrait ne pas créer de fichier de configuration pour raphf (et les autres modules installés avec ce dernier), 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 raphf 20 semble bien. ( Update : si vous recherchez pecl_http, à partir de la version 2, il doit être chargé après rapfh et 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- Ubunt )

1
David

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

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