Installa i pacchetti PECL su Ubuntu


32

L'ho provato un centinaio di volte, sono davvero nuovo su Ubuntu e ho concluso con un mucchio di errori che non capisco nemmeno, qualcuno può aiutarmi, per favore?

Ecco cosa ho fatto:

  1. Ho installato PHP
  2. Ho installato libcurl quindi php5-dev
  3. Ho provato a installare l'estensione PECL e dice PHPIZEnon trovato.

Benvenuto in Ask Ubuntu. Per favore, puoi darci il comando completo che hai emesso e il messaggio di errore completo. Modifica il testo della domanda per aggiungere le informazioni, per favore.
MadMike,

Risposte:


48

Innanzitutto, dovrai installare PEAR tramite apt-getper ottenere il pacchetto e il sistema di distribuzione necessari che entrambi PEARe PECLutilizzano. Da un prompt della shell immettere:

sudo apt-get install php-pear

Ti verrà richiesto di confermare l'installazione. Basta premere "y" e inserire. Se tutto va bene dovresti vederlo scaricare e installare il pacchetto php-pear.

Ora dovrai installare il pacchetto php5-dev per ottenere i file sorgente PHP5 necessari per compilare moduli aggiuntivi. Immettere quanto segue da un prompt della shell:

sudo apt-get install php5-dev

Se non installi il pacchetto php5-dev e provi a installare un'estensione PECL usando "pera installazione", otterrai il seguente errore:

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

L'estensione PECL_HTTP richiede l'installazione di un pacchetto di dipendenza aggiuntivo. Probabilmente puoi saltare questo per altre estensioni:

sudo apt-get install libcurl3-openssl-dev

Ora siamo finalmente pronti per installare l'estensione. Da un prompt della shell, immettere quanto segue ma sostituire "pecl_http" con il nome dell'estensione PECL che si sta installando:

sudo pecl install pecl_http

Il programma di installazione potrebbe chiederti alcune opzioni specifiche per l'estensione che stai installando. Probabilmente puoi semplicemente premere invio una o più volte per accettare tutte le impostazioni predefinite a meno che non desideri impostare opzioni specifiche per l'implementazione. Se tutto va bene, il modulo dovrebbe scaricare, compilare e installare.

Una volta completata l'installazione, probabilmente ti verrà chiesto di aggiungere una riga "extension =" al tuo file php.ini. Apri il file php.ini nel tuo editor di testo preferito e aggiungi la riga nella sezione "Estensioni dinamiche". Su Ubuntu il file php.ini sembra trovarsi nella cartella / etc / php5 / apache2:

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

In questo esempio, l'installazione dell'estensione pecl_http mi ha chiesto di aggiungere "extension = http.so". Ora che il file php.ini è stato aggiornato, Apache dovrà essere riavviato per caricare la nuova estensione:

sudo /etc/init.d/apache2 restart 

fonte


questi erano gli stessi passaggi che ho seguito esattamente (dalla stessa fonte) ancora nessuna gioia: / mi sono trasferito su Ubuntu solo per alcune estensioni che non sono disponibili su Windows ma questo è così confuso perché sono nuovo in questo.
Maniteja,

1
NOTA: potrebbe essere necessario installare makeprima di eseguire questa operazione. Basta faresudo apt-get install make
Tomanow il

5
Se stai usando PHP7, vorrai php7.0-devinvece il pacchetto:sudo apt-get install php7.0-dev
Graham Swan,

4

Oltre alla risposta di @ Ask, dovevo anche fare:

sudo apt-get install libpcre3-dev

prima di correre pecl install pecl_httpperché stavo ottenendo questo errore riguardo a pcre.h:

errore irreversibile: pcre.h: nessuna compilazione di file o directory terminata.

Inoltre, invece di modificare il php.inifile ho creato un nuovo file chiamato pecl-http.ininella conf.dsottodirectory di dove si trovava il php.inifile, (su Ubuntu /etc/php5/apache2/conf.d)

E avevo bisogno di aggiungere in tre righe:

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

Infine, poiché questa versione installata 2.0.6non è stata in grado di utilizzare la http_get_request_headersfunzione ma era necessario utilizzare invece la versione con spaziatura dei nomi, \http\Env::getRequestHeader() vedere ulteriori dettagli qui

ps: non dimenticare di riavviare apache quando hai finito ( service apache2 restart)


Buona chiamata; vorrei leggere la tua risposta prima di andare a caccia di libcre-dev. Dovrei anche aggiungere che nel mio caso dovevo aggiungere extension=json.soprima della http.soriga nonostante avessi già json.iniincluso il file conf.d.
M1ke

1

Oltre alle risposte di Maythux e cwd, potresti non voler modificare il tuo file php.ini perché queste modifiche potrebbero andare perse sugli aggiornamenti.

Debian (e quindi Ubuntu) gestisce i moduli php allo stesso modo dei moduli apache. Dai un'occhiata /etc/php5, troverai directory come questa:

apache2/
cli/
mods-available/

Quando guardi dentro mods-availablevedi diversi file come:

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

Per abilitare / disabilitare queste mod disponibili per tutte le API (apache, cli, cgi) puoi semplicemente usare i comandi php5enmodo php5dismodcosì:

$ sudo php5enmod curl

rispettivamente

$ sudo php5dismod curl

Questi creeranno (o rimuoveranno) collegamenti simbolici al file di configurazione del modulo in apache2/conf.d/e cli/conf.d/.

Puoi anche specificare il sapi per abilitare / disabilitare la mod per (apache in questo caso):

$ sudo php5enmod -s apache2

pecl installpotrebbe non creare un file di configurazione per raphf(e altri moduli installati con esso) ma puoi crearlo da solo:

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

Quindi scrivere nelle seguenti righe:

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

La priorità predefinita è 20. Potrebbe dipendere dal tipo di modulo quale priorità devi usare. Per raphf20 sembra bene. ( Aggiornamento : se stai cercando pecl_http, a partire dalla versione 2 deve essere caricato dopo rapfhe propro, quindi imposta la priorità in mods-available/http.inia 30.)

Con ciò puoi abilitare il modulo:

$ sudo php5enmod raphf

(Nota: la mia risposta dipende da Ubuntu 14.04 ma potrebbe funzionare in modo uguale per 13.04, vedere http://www.lornajane.net/posts/2012/managing-php-5-4-extensions-on-ubuntu )


1

Ora giorni, installa PEAR in questo modo, per ottenerlo dal sorgente:

wget http://pear.php.net/go-pear.phar
php go-pear.phar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.