Instalar paquetes PECL en ubuntu

32

Lo he intentado 100 veces, soy realmente nuevo en Ubuntu y terminé con un montón de errores que ni siquiera entiendo, ¿alguien puede ayudarme?

Aquí esta lo que hice:

  1. Instalé PHP
  2. Instalé libcurl y luego php5-dev
  3. Intenté instalar la extensión PECL y dice que PHPIZEno se encuentra.
maniteja
fuente
Bienvenido a Ask Ubuntu. Puede darnos el comando completo que emitió y el mensaje de error completo. Edite el texto de su pregunta para agregar la información por favor.
MadMike

Respuestas:

48

En primer lugar, tendrá que instalar PEAR a través apt-getde obtener el sistema de paquetes y distribución necesario que tanto PEARy PECLuso. Desde un indicador de shell, ingrese:

sudo apt-get install php-pear

Se le pedirá que confirme la instalación. Simplemente presione “y” e ingrese. Si todo va bien, debería verlo descargar e instalar el paquete php-pear.

Ahora necesitará instalar el paquete php5-dev para obtener los archivos fuente PHP5 necesarios para compilar módulos adicionales. Ingrese lo siguiente desde un indicador de shell:

sudo apt-get install php5-dev

Si no instala el paquete php5-dev e intenta instalar una extensión PECL usando "pear install", obtendrá el siguiente error:

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

La extensión PECL_HTTP requiere la instalación de un paquete de dependencia adicional. Probablemente pueda omitir esto para otras extensiones:

sudo apt-get install libcurl3-openssl-dev

Ahora finalmente estamos listos para instalar realmente la extensión. Desde un intérprete de comandos de shell ingrese lo siguiente pero sustituya "pecl_http" con el nombre de la extensión PECL que está instalando:

sudo pecl install pecl_http

El instalador puede preguntarle sobre algunas opciones específicas para la extensión que está instalando. Probablemente puede presionar enter una o más veces para aceptar todos los valores predeterminados a menos que desee establecer opciones específicas para su implementación. Si todo va bien, el módulo debe descargar, compilar e instalar.

Una vez que se complete la instalación, probablemente le pedirá que agregue una línea "extension =" a su archivo php.ini. Abra el archivo php.ini en su editor de texto favorito y agregue la línea debajo de la sección denominada "Extensiones dinámicas". En Ubuntu, el archivo php.ini parece estar ubicado en la carpeta / etc / php5 / apache2:

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

En este ejemplo, la instalación de la extensión pecl_http me pidió que agregue "extension = http.so". Ahora que el archivo php.ini se ha actualizado, Apache deberá reiniciarse para que se cargue la nueva extensión:

sudo /etc/init.d/apache2 restart 

fuente

Maythux
fuente
Estos fueron los mismos pasos que seguí exactamente (de la misma fuente) todavía no me alegro: / Me mudé a Ubuntu solo por algunas extensiones que no están disponibles en Windows, pero esto es muy confuso porque soy nuevo en esto.
maniteja
1
TENGA EN CUENTA: es posible que deba instalar makeantes de hacer esto. Simplemente hazlosudo apt-get install make
Tomanow
55
Si está utilizando PHP7, querrá el php7.0-devpaquete en su lugar:sudo apt-get install php7.0-dev
Graham Swan
4

Además de la respuesta de @ Ask, también tenía que hacer:

sudo apt-get install libpcre3-dev

antes de correr pecl install pecl_httpporque recibía este error sobre pcre.h:

error fatal: pcre.h: no se finalizó dicha compilación de archivos o directorios.

Además, en lugar de editar el php.iniarchivo, creé un nuevo archivo llamado pecl-http.inien el conf.dsubdirectorio donde estaba el php.iniarchivo (en ubuntu/etc/php5/apache2/conf.d )

Y necesitaba agregar tres líneas:

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

Finalmente, desde esta versión instalada 2.0.6no pude usar la http_get_request_headersfunción, pero necesitaba usar la versión con espacio de nombres,\http\Env::getRequestHeader() vea más detalles aquí

ps: no olvides reiniciar Apache cuando hayas terminado ( service apache2 restart)

cwd
fuente
Buena llamada; Ojalá hubiera leído tu respuesta antes de ir a buscar libcre-dev. También debería agregar que en mi caso necesitaba agregar extension=json.soantes de la http.solínea a pesar de que ya tenía el json.iniarchivo incluido conf.d.
M1ke
1

Además de las respuestas de Maythux y cwd, es posible que no desee editar su archivo php.ini porque estos cambios pueden perderse en las actualizaciones.

Debian (y por lo tanto Ubuntu) maneja los módulos php de la misma manera que los módulos apache. Eche un vistazo /etc/php5, encontrará directorios como este:

apache2/
cli/
mods-available/

Cuando miras mods-available, ves varios archivos como:

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

Para habilitar / deshabilitar estos mods disponibles para todas las API (apache, cli, cgi) puede usar los comandos php5enmodo algo php5dismodasí:

$ sudo php5enmod curl

respectivamente

$ sudo php5dismod curl

Estos crearán (o eliminarán) enlaces simbólicos al archivo de configuración del módulo en apache2/conf.d/y cli/conf.d/.

También puede especificar el sapi para habilitar / deshabilitar el mod para (apache en este caso):

$ sudo php5enmod -s apache2

pecl installes posible que no cree un archivo de configuración raphf(y otros módulos instalados con él) pero puede crearlo usted mismo:

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

Luego escribe en las siguientes líneas:

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

La prioridad predeterminada es 20. Puede depender del tipo de módulo que prioridad tiene que usar. Por raphf20 parece estar bien. ( Actualización : si usted está buscando pecl_http, a partir de la versión 2 que tiene que ser cargado después rapfhy propro, por lo establezca la prioridad en la mods-available/http.inique30 .)

Con eso puedes habilitar el módulo:

$ sudo php5enmod raphf

(Nota: mi respuesta depende de Ubuntu 14.04 pero podría funcionar de igual manera para 13.04, consulte http://www.lornajane.net/posts/2012/managing-php-5-4-extensions-on-ubuntu )

David
fuente
1

Hoy en día, instale PEAR de esta manera, para obtenerlo de la fuente:

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