PHP Compilare su Linux


Esempio

Per compilare un'estensione PHP in un tipico ambiente Linux, ci sono alcuni prerequisiti:

  • Abilità di base di Unix (essere in grado di operare "make" e un compilatore C)
  • Un compilatore C ANSI
  • Il codice sorgente per l'estensione PHP che desideri compilare

Generalmente ci sono due modi per compilare un'estensione PHP. Puoi compilare staticamente l'estensione nel binario PHP o compilarlo come un modulo condiviso caricato dal tuo binario PHP all'avvio. I moduli condivisi sono più probabili dal momento che ti permettono di aggiungere o rimuovere estensioni senza ricostruire l'intero binario PHP. Questo esempio si concentra sull'opzione condivisa.

Se hai installato PHP tramite il tuo gestore di pacchetti ( apt-get install , yum install , ecc.) -dev installare il pacchetto -dev per PHP, che includerà i file header PHP necessari e lo script phpize per far funzionare l'ambiente di compilazione . Il pacchetto potrebbe essere chiamato qualcosa come php5-dev o php7-dev , ma assicuratevi di usare il vostro gestore di pacchetti per cercare il nome appropriato usando i repository della vostra distro. Possono differire.

Se hai creato PHP dal sorgente, i file header probabilmente esistono già sul tuo sistema (di solito in /usr/include o /usr/local/include ).

Passi da compilare

Dopo aver controllato di avere tutti i prerequisiti necessari per la compilazione, puoi andare su pecl.php.net , selezionare un'estensione che desideri compilare e scaricare la tar ball.

  1. Disimballare la sfera tar (ad es. tar xfvz yaml-2.0.0RC8.tgz )
  2. Immettere la directory in cui è stato decompresso l'archivio ed eseguire phpize
  3. Ora dovresti vedere uno script .configure appena creato, se tutto è andato bene, .configure ./configure
  4. Ora dovrai eseguire make , che compilerà l'estensione
  5. Infine, make install copierà l'estensione binary compilata nella tua directory di estensione

In genere, il passaggio di make install fornisce in genere il percorso di installazione in cui è stata copiata l'estensione. Questo di solito è in /usr/lib/ , ad esempio potrebbe essere qualcosa di simile a /usr/lib/php5/20131226/yaml.so . Ma questo dipende dalla configurazione di PHP (ie --with-prefix ) e dalla specifica versione dell'API. Il numero dell'API è incluso nel percorso per mantenere le estensioni create per diverse versioni dell'API in posizioni separate.

Caricamento dell'estensione in PHP

Per caricare l'estensione in PHP, trovare il file php.ini caricato per il SAPI appropriato e aggiungere l' extension=yaml.so riga extension=yaml.so quindi riavviare PHP. Cambia yaml.so al nome dell'effettiva estensione che hai installato, ovviamente.

Per un'estensione Zend è necessario fornire il percorso completo del file oggetto condiviso. Tuttavia, per le normali estensioni PHP questo percorso deriva dalla direttiva extension_dir nella configurazione caricata o dall'ambiente $PATH durante l'installazione iniziale.