O mesmo que o script de "Growling Flea", mas usando novas versões.
Adicione o PPA
Os pacotes PHP 5.6 e PHP 7.0 são de PPA de terceiros, não fornecidos pelos repositórios oficiais do Ubuntu da Canonical. Os PPAs que recomendo aqui são de Ondřej Surý, que empacota PHP para Debian (que é então usado pelo Ubuntu), portanto, embora não seja um repositório oficial, ele não é exatamente aleatório! O PPA em si está
aqui
Para adicionar o PPA à sua configuração:
sudo add-apt-repository ppa:ondrej/php
Em seguida, também queremos obter informações sobre o que está em oferta neste novo PPA e, em seguida, execute:
sudo apt-get update
Instale novas versões do PHP
Eu já tinha alguns dos pacotes php5 instalados, mas não desinstalei nada, apenas deixei o apt descobrir o que ele queria fazer quando pedi para instalar as novas versões:
sudo apt-get install php5.6 php7.0
Isso resultou em muitas reclamações do apt e muitos conflitos. A primeira resolução sugerida foi remover todos os pacotes php5 padrão para que o PHP 5.6 pudesse ser instalado - então aceitei a primeira sugestão.
Eu uso o apache, então essa configuração me deu o apache com os módulos php5.6 e php7.0 disponíveis, e o módulo php5.6 realmente carregado.
Assim como apenas o próprio PHP, todas as extensões e outras ferramentas que você esperaria do PHP existem para ambas as versões, portanto é muito fácil adicionar os módulos necessários. Fiquei muito, muito impressionado com o quão bem isso é feito.
Configurando e alternando versões
Agora você tem duas versões completamente separadas do PHP instaladas no seu sistema, então vamos dar uma olhada em onde todas as partes foram!
Os arquivos de configuração estão todos dentro /etc/php/5.6
e /etc/php/7.0
respectivamente - aqui dentro é onde você pode configurar quais extensões são carregadas, definir as configurações ini e tudo o mais para cada versão isoladamente.
Sou um usuário apache e, como mencionei, os dois módulos estão disponíveis. Então, para mudar de um para o outro, preciso fazer:
sudo a2dismod php5.6
sudo a2enmod php7.0
sudo service apache2 restart
Para os usuários do nginx, as alterações são quase tão fáceis quanto a Digital Ocean possui uma boa documentação sobre isso (eles têm ótimos documentos!). Confira o guia:
https://www.digitalocean.com/community/tutorials/how-to- upgrade-para-php-7-no-ubuntu-14-04
, pois inclui uma seção sobre reconfigurando o nginx para usar outra versão do PHP.
Na linha de comando, tenho o php5.6 e o php7.0 disponíveis como comandos. Eu também ainda tenho um comando php - procure em / etc / alternative para ver que ele se vincula a uma versão específica do PHP cli *. Você também pode verificar rapidamente qual o seu está usando executando php -v
.
* mais especificamente, execute qual php para ver qual versão do PHP está sendo usada - mas isso provavelmente apontará para o /usr/bin/php
que, para mim, é um link simbólico para o /etc/alternatives/php
comando.
Trabalhando com extensões
Este PPA vem com o pacote php-pear usual, que oferece o comando pecl para ambas as versões do PHP, portanto, qualquer extensão disponível via PECL pode ser instalada da maneira usual. Você também precisará dos cabeçalhos relevantes para que o php5.6-dev ou o php7.0-dev sejam instalados.
Quando a instalação do pecl for concluída, você receberá uma nota para adicionar o arquivo * .so ao seu php.ini; de fato, a melhor coisa a fazer aqui é ver o que há dentro /etc/php/mods-available
. Já haverá alguns módulos aqui, cada um em seu próprio arquivo com o nome da extensão e terminando em .ini. Você pode copiar um para usar como modelo ou criar o seu próprio e colocar nele toda a configuração relevante para a extensão (no mínimo, você precisa extension=[extensionName].so
).
Quando a nova extensão estiver disponível nos mods, ative e verifique-o fazendo:
sudo phpenmod extension
php -m
Isso criará os links simbólicos nos lugares certos para a sua versão atual do PHP carregar este módulo, e você deverá vê-lo na lista de módulos produzidos pelo php -m
. Dica profissional: se você não o vir na saída, role até o topo da saída e veja se há alguma mensagem de erro útil lá.