Instale pacotes PECL no ubuntu

32

Eu tentei 100 vezes, sou realmente novo no Ubuntu e terminei com um monte de erros que eu nem entendo, alguém por favor pode me ajudar?

Aqui está o que eu fiz:

  1. Eu instalei o PHP
  2. Eu instalei o libcurl e depois o php5-dev
  3. Eu tentei instalar a extensão PECL e ele diz que PHPIZEnão foi encontrado.
maniteja
fonte
Bem-vindo ao Ask Ubuntu. Pode nos dar o comando completo que você emitiu e a mensagem de erro completa. Edite o texto da sua pergunta para adicionar as informações, por favor.
precisa saber é o seguinte

Respostas:

48

Primeiro, você vai precisar instalar PEAR via apt-getpara obter o sistema de pacotes e distribuição necessário que ambos PEARe PECLuso. Em um prompt do shell, digite:

sudo apt-get install php-pear

Você será solicitado a confirmar a instalação. Basta pressionar "y" e entrar. Se tudo der certo, você deverá fazer o download e instalar o pacote php-pear.

Agora você precisará instalar o pacote php5-dev para obter os arquivos de origem PHP5 necessários para compilar módulos adicionais. Digite o seguinte em um prompt de shell:

sudo apt-get install php5-dev

Se você não instalar o pacote php5-dev e tentar instalar uma extensão PECL usando “pear install”, você receberá o seguinte erro:

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

A extensão PECL_HTTP requer a instalação de um pacote de dependência adicional. Você provavelmente pode pular isso para outras extensões:

sudo apt-get install libcurl3-openssl-dev

Agora estamos finalmente prontos para instalar a extensão. Em um prompt do shell, digite o seguinte, mas substitua “pecl_http” pelo nome da extensão PECL que você está instalando:

sudo pecl install pecl_http

O instalador pode perguntar sobre algumas opções específicas para a extensão que você está instalando. Você provavelmente pode pressionar Enter uma ou mais vezes para aceitar todos os padrões, a menos que deseje definir opções específicas para sua implementação. Se tudo correr bem, o módulo deve baixar, criar e instalar.

Quando a instalação estiver concluída, provavelmente será solicitado que você adicione uma linha “extension =” ao seu arquivo php.ini. Abra o arquivo php.ini no seu editor de texto favorito e adicione a linha na seção "Extensões dinâmicas". No Ubuntu, o arquivo php.ini parece estar localizado na pasta / etc / php5 / apache2:

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

Neste exemplo, a instalação da extensão pecl_http me pediu para adicionar "extension = http.so". Agora que o arquivo php.ini foi atualizado, o Apache precisará ser reiniciado para que a nova extensão seja carregada:

sudo /etc/init.d/apache2 restart 

fonte

Maythux
fonte
estes foram os mesmos passos que segui exatamente (da mesma fonte) ainda sem alegria: / mudei para o Ubuntu apenas para algumas extensões que não estão disponíveis no Windows, mas isso é tão confuso porque sou novo nisso.
precisa saber é
1
ATENÇÃO: Talvez você precise instalar makeantes de fazer isso. Simplesmente façasudo apt-get install make
Tomanow
5
Se você estiver usando PHP7, você vai querer o php7.0-devpacote em vez disso:sudo apt-get install php7.0-dev
Graham Swan
4

Além da resposta da @ Ask, eu também precisava:

sudo apt-get install libpcre3-dev

antes de executar pecl install pecl_httpporque estava recebendo este erro sobre pcre.h:

erro fatal: pcre.h: Nenhuma compilação de arquivo ou diretório foi encerrada.

Além disso, em vez de editar o php.iniarquivo, criei um novo arquivo chamado pecl-http.inino conf.dsubdiretório de onde php.iniestava o arquivo (no ubuntu /etc/php5/apache2/conf.d)

E eu precisava adicionar três linhas:

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

Por fim, como esta versão instalada, 2.0.6eu não poderia usar a http_get_request_headersfunção, mas precisava usar a versão no namespace, \http\Env::getRequestHeader() veja mais detalhes aqui

ps: não esqueça de reiniciar o apache quando terminar ( service apache2 restart)

cwd
fonte
Boa decisão; gostaria de ter lido sua resposta antes de sair à procura do libcre-dev. Devo também acrescentar que, no meu caso, eu precisava adicionar extension=json.soantes da http.solinha, apesar de já ter o json.iniarquivo incluído conf.d.
M1ke
1

Além das respostas do Maythux e do cwd, você pode não querer editar o seu arquivo php.ini porque essas alterações podem se perder nas atualizações.

O Debian (e, portanto, o Ubuntu) lida com módulos php da mesma maneira que os módulos apache. Dê uma olhada /etc/php5, você encontrará diretórios como este:

apache2/
cli/
mods-available/

Quando você olha para dentro, mods-availablevê vários arquivos como:

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

Para ativar / desativar esses mods disponíveis para todas as APIs (apache, cli, cgi), você pode simplesmente usar os comandos php5enmodou algo php5dismodassim:

$ sudo php5enmod curl

respectivamente

$ sudo php5dismod curl

Eles criarão (ou removerão) links simbólicos para o arquivo de configuração do módulo em apache2/conf.d/e cli/conf.d/.

Você também pode especificar o sapi para ativar / desativar o mod for (apache neste caso):

$ sudo php5enmod -s apache2

pecl installpode não criar um arquivo de configuração para raphf(e outros módulos instalados com ele), mas você pode criá-lo por conta própria:

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

Em seguida, escreva nas seguintes linhas:

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

A prioridade padrão é 20. Pode depender do tipo de módulo que prioridade você deve usar. Para raphf20 parece bem. ( Atualização : se você estiver procurando por pecl_http, a partir da versão 2, ela deverá ser carregada depois rapfhe propro, portanto, defina a prioridade na mods-available/http.inipara 30.)

Com isso, você pode ativar o módulo:

$ sudo php5enmod raphf

(Nota: minha resposta depende do Ubuntu 14.04, mas pode funcionar da mesma maneira para o 13.04, consulte http://www.lornajane.net/posts/2012/managing-php-5-4-extensions-on-ubuntu )

David
fonte
1

Agora, dias, instale o PEAR dessa maneira, para obtê-lo da fonte:

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