not mac found php pear apc pecl osx-mavericks

php - mac - install pecl



instala pecl para la version php anterior (5)

En mi caso, estaba intentando instalar Gearman.

pecl install gearman lo instalaría incorrectamente.

php -i mostraría:

PHP Extension => 20100525

Sin embargo, pecl se instalaría usando:

PHP Api Version: 20090626

Después de cambiar mis ajustes de configuración para usar:

Primer arreglo

sudo pecl config-set php_ini /etc/php.ini sudo pecl config-set php_bin /usr/bin/php5

Me di cuenta de que todavía obtendría

ADVERTENCIA: php_bin / usr / bin / php5 parece tener un sufijo 5, pero la variable de configuración php_suffix no coincide

Puedes resolver esto usando la configuración de configuración:

Arreglo adicional

sudo pear config-set php_suffix 5

¿Por qué fue esto un problema?

Para mí, me metí en este problema porque agregué un PPA personalizado y reinstalé PHP. Esto significaba que mi instalación anterior de php5-dev no estaba sincronizada.

Si alguna vez te encuentras en la misma situación, es posible que solo quieras correr ...

apt-get remove php5-dev pecl uninstall <extensionname> apt-get install php5-dev apt-get remove php5-pear apt-get install php5-pear pecl install <extensionname>

Alternativamente, puede descargar la fuente y ejecutar phpize.

Actualicé mi MacBook a Mavericks y arruiné mi entorno de desarrollo. El problema que tengo ahora es que mi perla / pecl todavía intenta instalar para mi versión anterior (5.3) de PHP en lugar de la versión 5.4.

Versión de PHP:

$ php -v PHP 5.4.17 (cli) (built: Aug 25 2013 02:03:38) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

Pera

$ pear version PEAR Version: 1.9.4 PHP Version: 5.4.17 Zend Engine Version: 2.4.0 Running on: Darwin MBP-retina.local 13.0.0 Darwin Kernel Version 13.0.0: Thu Sep 19 22:22:27 PDT2013; root:xnu-2422.1.72~6/RELEASE_X86_64 x86_64

Si instalo apc con

$ sudo pecl install apc downloading APC-3.1.13.tgz ... Starting to download APC-3.1.13.tgz (171,591 bytes) .....................................done: 171,591 bytes 55 source files, building running: phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 ... Build process completed successfully Installing ''/usr/local/Cellar/php53/5.3.26/include/php/ext/apc/apc_serializer.h'' Installing ''/usr/local/Cellar/php53/5.3.26/lib/php/extensions/no-debug-non-zts-20090626/apc.so'' install ok: channel://pecl.php.net/APC-3.1.13 Extension apc enabled in php.ini

Y habilitar el módulo apc en mi php.ini php -v cambia a esto:

$ php -v PHP Warning: PHP Startup: Unable to load dynamic library ''/usr/lib/php/extensions/no-debug-non-zts-20100525/apc.so'' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20100525/apc.so, 9): image not found in Unknown on line 0 PHP 5.4.17 (cli) (built: Aug 25 2013 02:03:38) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

Así que pecl instala mi extensión apc en /usr/local/Cellar/php53/5.3.26/lib/php/extensions/no-debug-non-zts-20090626 y php la espera en /usr/lib/php/extensions/no-debug-non-zts-20100525/ .

Simplemente haciendo un enlace simbólico da el siguiente error:

$ php -v PHP Warning: PHP Startup: apc: Unable to initialize module Module compiled with module API=20090626 PHP compiled with module API=20100525 These options need to match in Unknown on line 0 PHP 5.4.17 (cli) (built: Aug 25 2013 02:03:38) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

Así que eso no es una solución.

¿Alguien puede señalarme en la dirección correcta? Realmente no tengo ni idea de lo que está pasando aquí.


Es mejor reinstalar las extensiones de phpize, ya que PECL las usará y no hará hacks.

Haga lo siguiente (php 5.5 => php 5.6 ejemplo):

sudo apt-get remove php5-dev sudo apt-get install php5.6-dev

(Puedes cambiar 5.6 a la versión que necesites)

Entonces:

sudo pecl install extensionname



La solución era bastante simple. Tuve que hacer modificaciones a mi configuración pecl. Resultó que estos dos comandos hicieron el truco:

sudo pear config-set php_ini /etc/php.ini sudo pecl config-set bin_dir /usr/bin/

pecl usó el phpize mal. Había dos versiones del phpize. Lo mismo cuenta para mi archivo php.ini.


Ninguna de las otras respuestas (hasta el momento) parece abordar el hecho de tener varias versiones de PHP "coinstalables" mientras se desea construir una extensión determinada para todas las versiones de PHP instaladas.

Para ilustrar el escenario en el que me encuentro (uso los PPA de Ondrej Surý para Ubuntu 16.04 LTS):

root@localhost:~# ls -lah /usr/bin/*php* -rwxr-xr-x 1 root root 11K Apr 19 12:50 dh_php -rwxr-xr-x 1 root root 3.1K Apr 5 2016 dh_phpcomposer -rwxr-xr-x 1 root root 5.4K Apr 5 2016 dh_phppear lrwxrwxrwx 1 root root 21 Jul 24 00:44 php -> /etc/alternatives/php -rwxr-xr-x 1 root root 4.3M Jul 6 10:04 php5.6 -rwxr-xr-x 1 root root 4.3M Jul 6 10:04 php7.0 -rwxr-xr-x 1 root root 4.4M Aug 4 14:22 php7.1 lrwxrwxrwx 1 root root 28 Jul 24 00:44 php-config -> /etc/alternatives/php-config -rwxr-xr-x 1 root root 4.3K Jul 6 10:03 php-config5.6 -rwxr-xr-x 1 root root 4.1K Jul 6 10:03 php-config7.0 -rwxr-xr-x 1 root root 4.1K Aug 4 14:21 php-config7.1 lrwxrwxrwx 1 root root 24 Jul 24 00:44 phpize -> /etc/alternatives/phpize -rwxr-xr-x 1 root root 4.7K Jul 6 10:03 phpize5.6 -rwxr-xr-x 1 root root 4.6K Jul 6 10:03 phpize7.0 -rwxr-xr-x 1 root root 4.6K Aug 4 14:21 phpize7.1

pecl install extension-name hace el trabajo para PHP 7.1, pero no los otros.

Las otras respuestas indican que si bien es posible desinstalar / reinstalar php*-dev , preferiría no hacerlo, dadas las versiones de PHP instaladas en el sistema.

Una solución es construir la extensión para cada versión presente en el sistema.

Este fragmento muestra cómo construir con PHP 5.6, pero he hecho lo mismo para 7.0 y 7.1 y los pasos son los mismos.

Este ejemplo demuestra la clonación de la extensión de un repositorio Git, pero uno puede usar cualquier directorio de origen.

( # indica que debes ser root o usar sudo )

# apt-get install php-dev # cd ~ # git clone https://github.com/vendor/extension-name # cd ./extension-name # phpize5.6 # ./configure --with-php-config=/usr/bin/php-config5.6 # make clean # make # make install # ln -s /etc/php/5.6/mods-available/extension-name.ini /etc/php/5.6/fpm/conf.d/20-extension-name.ini # service php5.6-fpm reload