Come lo script di "Growling Flea", ma usando nuove versioni.
Aggiungi il PPA
I pacchetti PHP 5.6 e PHP 7.0 provengono da un PPA di terze parti, non fornito dai repository Ubuntu ufficiali di Canonical. I PPA che sto raccomandando qui sono di Ondřej Surý che confeziona PHP per Debian (che viene quindi utilizzato da Ubuntu) quindi, sebbene non sia un repository ufficiale, non è esattamente casuale! Lo stesso PPA è
qui
Per aggiungere il PPA alla tua configurazione:
sudo add-apt-repository ppa:ondrej/php
Quindi vorremmo anche ottenere informazioni su ciò che è offerto da questo nuovo PPA, quindi eseguire:
sudo apt-get update
Installa nuove versioni di PHP
Avevo già installato alcuni dei pacchetti php5, ma non ho disinstallato nulla, ho lasciato a apt capire cosa voleva fare quando gli ho chiesto di installare le nuove versioni:
sudo apt-get install php5.6 php7.0
Ciò ha comportato molte lamentele da apt e molti conflitti. La prima risoluzione suggerita è stata quella di rimuovere tutti i pacchetti stock php5 in modo da poter installare PHP 5.6, quindi ho appena accettato il primo suggerimento.
Uso apache quindi questa configurazione mi ha dato apache con i moduli php5.6 e php7.0 disponibili e il modulo php5.6 effettivamente caricato.
Oltre al PHP stesso, tutte le estensioni e gli altri strumenti che ti aspetteresti con PHP sono disponibili per entrambe le versioni di PHP, quindi è molto facile aggiungere i moduli di cui hai bisogno. Sono rimasto molto, molto colpito da quanto bene sia stato fatto.
Configurazione e cambio di versioni
Ora hai due versioni completamente separate di PHP installate sul tuo sistema, quindi diamo un'occhiata a dove sono andati tutti i pezzi!
I file di configurazione sono tutti dentro /etc/php/5.6
e /etc/php/7.0
rispettivamente - dentro qui è dove puoi configurare quali estensioni vengono caricate, impostare le impostazioni ini e tutto il resto per ogni versione in isolamento.
Sono un utente apache e, come ho già detto, sono disponibili entrambi i moduli. Quindi per passare dall'uno all'altro devo fare:
sudo a2dismod php5.6
sudo a2enmod php7.0
sudo service apache2 restart
Per gli utenti di nginx, le modifiche sono quasi altrettanto facili, Digital Ocean ha una buona documentazione su questo (hanno una grande documentazione!) Quindi consulta la loro guida:
https://www.digitalocean.com/community/tutorials/how-to- upgrade-to-php-7-on-ubuntu-14-04
in quanto include una sezione sulla riconfigurazione di nginx per usare un'altra versione di PHP.
Dalla riga di comando, ho sia php5.6 che php7.0 disponibili come comandi. Ho anche ancora un comando php - guarda in / etc / alternatives per vedere che si collega a una particolare versione di PHP cli *. Puoi anche verificare rapidamente quale tuo sta usando eseguendo php -v
.
* più specificamente, esegui quale php per vedere quale versione di PHP viene utilizzata, ma probabilmente questo indicherà /usr/bin/php
, che per me è esso stesso un link simbolico al /etc/alternatives/php
comando.
Lavorare con le estensioni
Questo PPA viene fornito con il solito pacchetto php-pear che offre il comando pecl per entrambe le versioni di PHP, quindi eventuali estensioni disponibili tramite PECL possono essere installate nel solito modo. Avrai anche bisogno delle intestazioni pertinenti, quindi è necessario installare php5.6-dev o php7.0-dev.
Al termine dell'installazione di pecl, riceverai una nota per aggiungere il file * .so al tuo php.ini; in effetti la cosa migliore da fare qui è guardare cosa c'è dentro /etc/php/mods-available
. Ci saranno già alcuni moduli qui, ognuno nel suo file chiamato con il nome dell'estensione e che termina con .ini. Puoi copiarne uno da utilizzare come modello o crearne uno tuo e inserire al suo interno tutta la configurazione rilevante per l'estensione (come minimo, è necessario extension=[extensionName].so
).
Una volta che la nuova estensione è disponibile nelle mod, abilita e quindi controlla facendo:
sudo phpenmod extension
php -m
Questo creerà i collegamenti simbolici nei posti giusti per la tua attuale versione di PHP per caricare questo modulo, e dovresti vederlo nella lista dei moduli emessi da php -m
. Suggerimento pro: se non lo vedi nell'output, scorri fino in cima all'output e vedi se ci sono messaggi di errore utili lì.