Aggiornamento dell'installazione nativa di PHP su OS X Mountain Lion

Vediamo come possiamo aggiornare manualmente l'installazione nativa di OS X 10.8 PHP alla versione più recente (attualmente 5.4.5) e ottenere qualche altro utile software installato mentre ci siamo. * I pacchetti AMP sono pratici, ma raramente aggiornati, quindi assorbire la procedura descritta in questo articolo è inestimabile per ogni sviluppatore PHP.


The Theory of Building Dalla fonte

Se ti interessa solo l'aspetto pratico dell'installazione di PHP, sentiti libero di saltare questa sezione, ma potrebbe essere utile per te in seguito sapere come funziona e perché alcuni comandi sono necessari.

Ogni installazione di software dalla sorgente segue fondamentalmente la stessa catena di comandi: Scarica i file sorgente, configura, crea, opzionalmente prova, installa.

Configurazione

Lo script "configure" dice "make" cosa verrà costruito. Eseguito digitando "./configure", lo script di configurazione analizza le dipendenze, verifica che tu stia utilizzando un sistema operativo supportato, configura i file necessari per il sistema operativo specificato e genera infine un makefile, che quando viene chiamato "make", determina come e che cosa esattamente deve essere costruito.

"Configure" dice "make" cosa verrà costruito

Se lo script di configurazione trova dipendenze o errori mancanti, esegue un'uscita e interrompe l'esecuzione, consentendo all'utente di rimuovere o aggirare eventuali ostacoli prima di procedere. Il comando configure viene sempre prima quando si costruisce da sorgente.

Rendere

Successivamente, "make" crea ciò che configure gli ha detto di costruire. "Make" viene inizializzato semplicemente digitando "make" ed è in realtà un'utilità GNU che viene generalmente utilizzata per mantenere un set di file e ricompilarli se necessario.

"Make" costruisce ciò che configure gli ha detto di costruire

Per funzionare, richiede un makefile - un file in cui sono descritte le sue direttive e vengono rilevate le relazioni tra i file in questione. Una volta eseguito, il comando make legge il makefile ed esegue le attività.

Il comando "make test" esegue il comando make ma verifica anche la compilazione rispetto a un target di test. Non tutte le distribuzioni di origine supportano "make test", quindi, se non specificato esplicitamente nella documentazione di installazione del software che si sta installando, si usa il "make" regolare.

Il comando "make test" esegue il comando make ma verifica anche la compilazione rispetto a un target di test.

"Sudo make install" installa i file che "rendono" integrato in cartelle predefinite. Gestisce tutte le inclusioni, aggiorna e risolve i percorsi e sposta tutto dove dovrebbe essere. Effettivamente, termina l'installazione e l'utente in genere non ha bisogno di fare altro.

Questo è esattamente ciò che può fare Homebrew - il gestore di pacchetti che installiamo nella prossima sezione. Può eseguire lo stesso flusso, internamente. Non si vede direttamente nulla di tutto ciò, ma più o meno viene eseguita la stessa catena, se la "formula" presentata dal "fabbricante" è fatta in quel modo.

Rende l'intero processo meno ingombrante controllando automaticamente le dipendenze e installandole prima di passare al pacchetto principale designato. Quindi scarica e disarchivia ed esegue il configure, make, make install chain per completare l'installazione.

Quasi tutte le installazioni dalla sorgente seguono gli stessi passaggi: download, configure, make, install.

homebrew


Dalla casa di Homebrew

Affinché l'installazione di PHP avvenga nel modo più fluido possibile, è necessario installare Homebrew, un gestore di pacchetti per OSX che può gestire molte installazioni per voi - installazioni che altrimenti richiederebbero complesse procedure di compilazione e possono avere dipendenze critiche che richiedono ore da risolvere.

Avere installato Homebrew ti porterà benefici a lungo termine.

Avere installato Homebrew ti avvantaggerà a lungo termine, non solo per lo scopo di questo articolo. Offre un modo rapido per installare librerie e software comuni senza dover costruire dal sorgente.
Per installarlo, dobbiamo fare quanto segue (saltare questa sezione se hai installato Homebrew):

  1. Installa XCode tramite l'App Store. Una volta installato, installa gli strumenti della riga di comando tramite l'app XCode stessa oppure scarica e installa da http://developers.apple.com. Abbiamo bisogno di XCode e CLT perché Homebrew li richiede.
  2. Installa X11 da qui. Questo è anche un requisito di Homebrew. Scegli l'ultima versione disponibile, non necessariamente quella collegata qui.
  3. Installa Homebrew da GitHub.
  4. In caso di problemi, potrebbe essere necessario eseguire quanto segue dopo i passaggi 1 e 2:
     $ sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer $ ln -s / opt / X11 / usr / X11

    ... tratto da questo post. Ciò accade in alcuni casi di Mountain Lion per qualche motivo.

Una volta terminato, fai funzionare il medico e verifica che tutto funzioni (come da istruzioni sul sito Web di Homebrew).


PHP

Prevedibilmente, l'installazione di PHP richiede l'installazione di alcune librerie. Fortunatamente, Homebrew è qui per gestire queste installazioni per noi. Installa quanto segue:

 brew install libjpeg brew installa pcre brew install libxml2 brew installa mcrypt

Una volta fatto, scarica i file sorgente PHP da Php.net. Disimballare l'archivio, aprire il terminale e passare alla cartella di origine (ad esempio cd ~ / Downloads / php-5.4.5 / o in qualsiasi altro punto in cui sono stati scaricati i sorgenti).

Se hai intenzione di lavorare con Zend Framework 2 e vuoi iniziare con l'applicazione skeleton campione come fatta da Rob "Akrabat" Allen, o se intendi distribuire la tua applicazione in più lingue, hai bisogno del supporto php-intl. Per consentire allo script configure di prendere in considerazione php-intl mentre si costruisce il makefile, è necessario installare un'altra dipendenza - ICU. Scaricalo da ICU-Project.org ed esegui:

 tar xzvf icu4c-4_8_1-src.tgz cd icu / source ./runConfigureICU MacOSX make sudo make install

Questo ha gestito tutte le dipendenze di base che PHP potrebbe desiderare da noi (per ora). Ora possiamo finalmente costruirlo e installarlo.

Installazione

Per prima cosa, mentre nella cartella sorgente non archiviata di PHP, esegui il seguente comando configure:

 ./ configure \ --prefix = / usr \ --mandir = / usr / share / man \ - infodir = / usr / share / info \ --sysconfdir = / private / etc \ --with-apxs2 = / usr / sbin / apxs \ --enable-cli \ --with-config-file-path = / etc \ --with-libxml-dir = / usr \ --with-openssl = / usr \ --with-kerberos = / usr \ --with-zlib = / usr \ --enable-bcmath \ --with-bz2 = / usr \ --enable-calendar \ --with-curl = / usr \ --enable-dba \ --enable -exif \ --enable-ftp \ --with-gd \ --enable-gd-native-ttf \ --with-icu-dir = / usr \ --with-iodbc = / usr \ --with-ldap = / usr \ --with-ldap-sasl = / usr \ --with-libedit = / usr \ --enable-mbstring \ --enable-mbregex \ --with-mysql = mysqlnd \ --with-mysqli = mysqlnd \ --without-pear \ --with-pdo-mysql = mysqlnd \ --with-mysql-sock = / var / mysql / mysql.sock \ --with-readline = / usr \ --enable-shmop \ --with-snmp = / usr \ --enable-soap \ --enable-sockets \ --enable-sysvmsg \ --enable-sysvsem \ --enable-sysvshm \ --with-tidy \ --enable-wddx \ --with-xmlrpc \ --with-iconv-dir = / usr \ --with-xsl = / usr \ --enable-zip \ --with-imap = / usr / local / imap-2007 \ --with-kerberos \ --with-imap-ssl \ --enable-intl \ --with-pcre-regex \ --with-pgsql = / usr \ --with-pdo-pgsql = / usr \ - -with-freetype-dir = / usr / X11 \ --with-jpeg-dir = / usr \ --with-png-dir = / usr / X11

Una volta fatto, esegui

$ fare un test

"Make test" esegue make e verifica le compilation per errori

Come accennato nella sezione su Build Theory, questo esegue make e testa la compilation. Questo potrebbe richiedere un po 'di tempo, fino a 30 minuti, perché ogni singolo aspetto di PHP viene testato. Al termine, se PHP ha riscontrato errori (e probabilmente lo farà) segnalarli agli sviluppatori seguendo le istruzioni sullo schermo. Non preoccuparti, tutto va ancora bene - gli errori che trova sono solitamente meno importanti.


Come puoi vedere, alcuni 11503 test devono essere eseguiti. Questo richiederà un po 'di tempo.

Se hai già attivato e configurato il PHP originale, effettua ora un backup del tuo file php.ini. Dovrebbe essere in /etc/php.ini

Infine, esegui quanto segue per installare effettivamente PHP.

$ sudo make install

È meglio non sovrascrivere il nuovo file php.ini con quello vecchio se si è fatto un backup. Invece, copia i valori che ti servono manualmente, per stare dalla parte della sicurezza - in questo modo ci assicuriamo che il nuovo file php.ini sia completamente compatibile con la versione appena installata.


Configurazione Apache

Quasi finito! Se avessi già attivato PHP sul tuo computer prima di questo e l'unico scopo di leggere questo articolo era in realtà l'aggiornamento del PHP esistente, allora hai finito - tutto dovrebbe funzionare.

In caso contrario, tuttavia, è necessario abilitare PHP nell'installazione nativa di Apache di OSX. Dato che il file httpd.conf sarà probabilmente nella posizione predefinita, aprilo tramite Terminal in TextEdit in questo modo:

$ SUDO_EDITOR = "open -FWne" sudo -e /etc/apache2/httpd.conf

Sto usando il comando SUDO EDITOR qui per aprire il file in TextEdit, semplicemente perché ritengo molto più facile modificare i file in Vim o Nano. Avrei potuto anche usare "$ sudo vim /ect/apache2/httpd.conf" per modificarlo in vim.

Quindi, Decommenta le seguenti righe (non sono una accanto all'altra - usa il comando Trova per individuarle)

 LoadModule php5_module libexec / apache2 / libphp5.so Include /private/etc/apache2/extra/httpd-vhosts.conf

La prima riga attiva l'uso di PHP come modulo Apache. La seconda linea è lì in modo che il file principale httpd.conf (configurazione di Apache) raccolga gli host virtuali dal file vhosts e ci risparmi il problema di una modifica eccessiva nel file httpd.conf eccessivamente sensibile. Questo ha l'ulteriore vantaggio di farti salvare un file vhosts da qualche parte al di fuori di / etc, e il suo backup per altre macchine di sviluppo o reinstallazione.

Un approccio molto pratico a questo è l'hosting su un servizio cloud come Google Drive o Dropbox e il collegamento ad esso direttamente da httpd.conf. In questo modo, quando aggiungi un nuovo host virtuale, questo viene installato automaticamente su tutte le tue macchine non appena riavvii il server Apache locale.


Aggiunta di un Vhost e di un avvolgimento

Un host virtuale è un dominio immaginario ospitato localmente. In pratica ti consente di testare i tuoi progetti nel browser inserendo URL diversi. Per esempio, sulla mia macchina, potrei visitare http: //mactuts.tutorial e vedere l'app Hello World con cui questa sezione termina, oppure potrei visitare http://mw.dev per vedere la versione di sviluppo di un progetto che sono lavorandoci. Molto semplicemente, un URL diverso attiva una cartella di origine diversa e apre un progetto diverso come un sito web. Ecco una guida rapida su come aggiungere un vhost - se hai già impostato o se i vhosts ne comprendono tutto, sentiti libero di saltare questa sezione.

Passo 1: Modifica del file hosts

Innanzitutto, nomineremo il nostro esempio vhost "mactuts.tutorial". Per fare ciò, aggiungi una voce in / etc / hosts che assomiglia a questa:

 127.0.0.1 mactuts.tutorial

Ciò significa che l'accesso all'url http: //misuts.tutorial nel browser andrà a 127.0.0.1:80 o, in altre parole, alla porta 80 del nostro server locale (Apache).


Questo è un file hosts di esempio. Notare che ho anche altri host virtuali impostati su questa macchina

Passo 2: Aggiungi un vhost di Apache

Successivamente, aggiungi un blocco in etc / apache2 / extra / httpd-vhosts.conf che assomiglia a questo:

  ServerName mactuts.tutorial DocumentRoot "/ Utenti / USERNAME / Sites / mactuts" ServerAdmin [email protected]  Opzioni Indici FollowSymLinks AllowOverride All Order allow, deny Allow from all  

Sostituisci USERNAME con il tuo nome utente, senza le parentesi graffe. Questo dice ad Apache quanto segue: Se hai qualcosa sulla porta 80, controlla il suo nome url originale. Se è mactuts.tutorial, imposta tutte queste opzioni.

Passaggio 3: Riavvia Apache

Quindi, riavvia Apache con

 $ sudo apachectl restart

Passaggio 4: Crea il file indice

3) Creare una cartella "/ Users / USERNAME / Sites / mactuts" (naturalmente, sostituire USERNAME con il nome dell'utente OSX) e inserire un file index.php al suo interno con il seguente contenuto:

 

Passaggio 5: Controlla!

Vai a http: //mactuts.tutorial. Dovresti vedere "Hello World"!


alternative

Di recente, è emersa un'alternativa a questo approccio: l'installazione di PHP attraverso lo stesso Homebrew. Il problema è che al momento della stesura di questo articolo non ci sono canali ufficiali (inizio agosto 2012), quindi è necessario attivare un tocco alternativo per l'Homebrew.

Inoltre, la versione OS X su cui ho provato questo, Mountain Lion, purtroppo non è riuscita a installarla in quel modo e mi ha lanciato errori vaghi che non riuscivo a risolvere. Se ti senti avventuroso controlla questo post e prova a modificarlo in base al tuo sistema operativo e alla versione PHP desiderata.

Un'alternativa più stabile sembra essere disponibile qui, ma il feedback è lassista e non c'è molto da fare, quindi lascerò questi metodi alla sperimentazione dei lettori.

aggiornamenti

Ecco alcune alternative suggerite dai commentatori da quando il post è stato pubblicato.

php_osx
Un'altra alternativa (apparentemente scorrevole) a questo è stata portata alla mia attenzione dal commentatore DaftViking e include l'installazione di PHP tramite php_osx.

macports
Sebbene incoraggi l'eliminazione graduale dei Macport in favore di Homebrew, sembra che Macports abbia aggiunto anche una versione stabilizzata di PHP, quindi potrebbe fornire un'altra alternativa funzionante. Non ho personalmente testato questo approccio, ma per coloro che hanno esperienza con Macports, ulteriori informazioni possono essere trovate qui. Grazie a Redditor nemeth88 per l'heads up!


Conclusione

OS X viene fornito con una configurazione PHP e Apache preinstallata. Purtroppo, la versione di PHP che viene fornita è severamente obsoleta e non viene mai aggiornata, tranne quando viene installata una nuova versione del sistema operativo. A quel punto, la nuova versione di PHP inclusa è già obsoleta, quindi oltre al recupero di un pacchetto * AMP (Apache / Mysql / Php) (che raramente, se mai, ha versioni aggiornate di PHP), cosa si può fare tranne aggiornarlo manualmente?

In questo tutorial abbiamo trattato le basi della creazione dal sorgente, abbiamo creato una nuova versione aggiornata di PHP e l'abbiamo installata, e abbiamo persino installato Homebrew che renderà le installazioni di software e librerie ancora più facili . Abbiamo anche parlato della creazione di un host virtuale e testato la nostra installazione per assicurarci che funzioni. Spero che ti sia piaciuto e che tutto abbia funzionato come previsto. Se incontri dei problemi, sentiti libero di postare nei commenti e lavoreremo insieme sui problemi.