Portuguese (Português) translation by Erick Patrick (you can also view the original English article)



Imagem de capa via PONTIER
Introdução
PHP 7 foi lançado dezembro passado. Após testar o código localmente, é hora de atualizar o servidor de produção. Geralmente, a maioria dos sites funcionam bem nele.
Contudo, suspeitamos que não muitos sites atualizaram. É mais seguro e fácil continuar em versões anteriores. Na verdade, uma pesquisa de sites WordPress mostrou que alguns tem:
"Até Novembro de 2016, 53.9% dos sites WordPress rodam versões PHP menores que 5.5 Apenas, 3.4% dos sites rodam PHP 7, a versão atual do PHP." via PHP Compatibility Checker.
Mas PHP 7 já está aí há quase um ano.
Nesse episódio, mostraremos uma abordagem para atualizar para PHP 7 no Ubuntu 14.x e resolver problemas com PHPMyAdmin, que muitos vanguardistas enfrentaram.
Por hora, se usamos WordPress, devemos instalar o plugin PHP Compatibility Checker para garantir que não encontraremos problemas inexperados com nossos plugins.
Sempre gostamos de suas ideias e comentários. Se tiverem perguntas ou sugestões de tópicos, por favor, publique seus pensamentos na seção de comentários.
Também podem me contatar no Twitter, @reifman. Isso é bem verdade com scripts de atualização populares como esse—onde a experiência e retorno dos usuários serão únicas e valiosas.
Atualizando o Servidor
Tentamos usar alguns guias padrões para atualizar para PHP 7 e acabamos lidando com problemas diferentes. Logo, os scripts abaixo foram testados repetidamente e acreditamos que funcionarão bem.
Novamente, agradeço muito a Digital Ocean, que facilita a cópia de servidores e repetidamente criar instâncias de testes para executar os passos de atualização do zero.
Comecemos
Note Quaisquer Customizações ao PHP 5
A essa altura, talvez queiramos dar uma olhada nas mudanças do PHP .ini e fazer cópia do arquivo php.ini já que precisaremos depois, par migrá-lo para PHP 7.
Isso deve ajudarnos a encontrar o arquivo .ini:
$ php --ini
Isso mostrou-nos:
$ php --ini PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20121212/newrelic.so' - /usr/lib/php5/20121212/newrelic.so: cannot open shared object file: No such file or directory in Unknown on line 0 Configuration File (php.ini) Path: /etc/php5/cli Loaded Configuration File: /etc/php5/cli/php.ini Scan for additional .ini files in: /etc/php5/cli/conf.d ...
Para o Apache, o nosso foi /etc/php5/apache2
.
Remover Pacotes PHP5 e Relacionados
Primeiro, removamos os pacotes antigos do PHP. Acreditamos ser melhor fazê-lo com cuidado, cobrindo não apenas o PHP5, mas o 5.5 e o 5.6, os quais experimentamos em um servidor.
$ sudo apt-get -y purge php php-common php-mcrypt php-mbstring $ sudo apt-get -y purge php5 php5-common php5-cli libapache2-mod-php5 php5-curl php5-gd php5-imap php5-intl php5-json php5-mcrypt php5-mysql php5-pspell php5-readline php5-sqlite $ sudo apt-get -y purge php5.5 php5.5-common php5.5-mcrypt php5.5-mbstring $ sudo apt-get -y purge php5.6 php5.6-common $ sudo apt-get autoremove
Quando não removemos todas as variações do PHP, enfrentamos problemas para configurar o PHP 7. Se tiverem alguma abordagem mais simples, por favor, compartilhe.
Adicionando um Arquivo de Pacotes Pessoais para PHP7 e PHPMyAdmin



$ sudo add-apt-repository ppa:ondrej/php Co-installable PHP versions: PHP 5.5, 5.6, PHP 7.0 and batteries included. You can get more information about the packages at https://deb.sury.org For PHP 5.4 on Ubuntu 12.04 use: ppa:ondrej/php5-oldstable BUGS&FEATURES: This PPA now has a issue tracker: https://deb.sury.org/#bug-reporting PLEASE READ: If you like my work and want to give me a little motivation, please consider donating regularly: https://donate.sury.org/ WARNING: add-apt-repository is broken with non-UTF-8 locales, see https://github.com/oerdnj/deb.sury.org/issues/56 for workaround: # LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php More info: https://launchpad.net/~ondrej/+archive/ubuntu/php Press [ENTER] to continue or ctrl-c to cancel adding it gpg: keyring `/tmp/tmpj6czswxr/secring.gpg' created gpg: keyring `/tmp/tmpj6czswxr/pubring.gpg' created gpg: requesting key E5267A6C from hkp server keyserver.ubuntu.com gpg: /tmp/tmpj6czswxr/trustdb.gpg: trustdb created gpg: key E5267A6C: public key "Launchpad PPA for Ondřej Surý" imported gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1) OK
E então, atualizamos nossos pacotes, distribuições e limpamos os arquivos remanescentes:
$ sudo apt-get update $ sudo apt-get dist-upgrade $ sudo apt-get autoremove
Talvez vejamos erros como esse:
The link /vmlinuz.old is a damaged link Removing symbolic link vmlinuz.old you may need to re-run your boot loader[grub]
Preferimos reiniciar e isso parece resolver o problema:
$ sudo reboot
Instalando PHP7
Agora, instalamos o PHP7 e todos seus pacotes:
sudo apt-get install php7.0 php7.0-mysql libapache2-mod-php7.0 php-apcu php7.0-gd php7.0-mcrypt php-memcache php7.0-curl php7.0-tidy php-xml php-json php7.0-mbstring php-gettext libmcrypt-dev mcrypt php-gd libmcrypt4 libmhash2 libtidy5 libxslt1.1 php-apcu-bc php-pear php7.0-mbstring php7.0-xml
No mometo, quereremos migrar todas as mudanças das configurações nos arquivos de configuração para /etc/php/7.0/apache2/php.ini
.
Também precisamos adicionar extension=apc.so
no arquivo:
$ sudo nano /etc/php/7.0/apache2/php.ini
Colocamos isso aqui:
;extension=php_openssl.dll ;extension=php_pdo_firebird.dll ;extension=php_pdo_mysql.dll ;extension=php_pdo_oci.dll ;extension=php_pdo_odbc.dll ;extension=php_pdo_pgsql.dll ;extension=php_pdo_sqlite.dll ;extension=php_pgsql.dll ;extension=php_shmop.dll extension=apc.so
Desabilitando PHPMyAdmin
Agora, se tivermos PHPMyadmin, teremos problemas ao reiniciar o Apache. Se for o caso, precisamos desabilitar o PHPMyAdmin:
$ sudo nano /etc/apache2/apache2.conf
Comentemos a linha que o carrega, lá no final:
# Include of directories ignores editors' and dpkg's backup files, # see README.Debian for details. # Include generic snippets of statements IncludeOptional conf-enabled/*.conf # Include the virtual host configurations: IncludeOptional sites-enabled/*.conf # vim: syntax=apache ts=4 sw=4 sts=4 sr noet # Include /etc/phpmyadmin/apache.conf
Então, habilitamos mcrypt
e mbstring
e reiniciamos Apache:
$ sudo phpenmod mcrypt $ sudo phpenmod mbstring $ sudo service apache2 restart
Testmos num servidor rodando alguns apps construídos apenas com HTML, PHP e Yii1.x e todos funcionaram.
Resintalando PHPMyAdmin
É hora de repararmos a instalação do PHPMyAdmin. Muitas pessoas encontram problemas.
Primeiro, adicionamos o repositório do pacote de nijel:
$ sudo add-apt-repository ppa:nijel/phpmyadmin Latest phpMyAdmin packages - https://www.phpmyadmin.net/. Based on packages available in Debian. There are some notable changes: * it currently requires updated PHP packages, you can get packages from https://launchpad.net/~ondrej/+archive/ubuntu/php/ * it does include embedded copies of PHP libraries If you like phpMyAdmin, you can support it's further development at https://www.phpmyadmin.net/donate/ or https://www.phpmyadmin.net/sponsors/, thanks! More info: https://launchpad.net/~nijel/+archive/ubuntu/phpmyadmin Press [ENTER] to continue or ctrl-c to cancel adding it gpg: keyring `/tmp/tmp6zix40vr/secring.gpg' created gpg: keyring `/tmp/tmp6zix40vr/pubring.gpg' created gpg: requesting key 06ED541C from hkp server keyserver.ubuntu.com gpg: /tmp/tmp6zix40vr/trustdb.gpg: trustdb created gpg: key 06ED541C: public key "Launchpad PPA for Michal Čihař" imported gpg: no ultimately trusted keys found gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1) OK
Então, atualizamos os pacotes e instalamos PHPMyAdmin:
$ sudo apt-get update $ sudo apt-get install phpmyadmin
Note que isso recarregará vários pacotes antigos do PHP 5.x, mas o PHPMyAdmin funcionará.
Por fim, descomentamos a linha do PHPMyAdmin que comentamos anteriormente.
$ sudo nano /etc/apache2/apache2.conf
Aqui:
# Include of directories ignores editors' and dpkg's backup files, # see README.Debian for details. # Include generic snippets of statements IncludeOptional conf-enabled/*.conf # Include the virtual host configurations: IncludeOptional sites-enabled/*.conf # vim: syntax=apache ts=4 sw=4 sts=4 sr noet Include /etc/phpmyadmin/apache.conf
E reiniciamos o Apache:
$ sudo service apache2 restart
Protegendo a Instalação do PHPMyAdmin
A reinstalação do PHPMyAdmin pô-lo de volta ao local padrão, que é bem inseguro e hackeável. Sigamos Instalando e Usando PHPMyAdmin Com WordPress para proteger melhor a instalação.
Verificando se PHP 7 Está Executando
Finalmente, criamos um pequeno script com phpinfo();
para verificar se o PHP 7 está ativo:



Finalizando
Atualizar para o PHP 7 num Ubuntu 14.x foi problemático e requereu muitas mudanças dos scripts publicados para funcionar. Espero que tenham curtido o tutorial.
Se curtiu, veja os próximos tutoriais na série Programando com Yii2 e Contruindo Sua Startup com PHP, que documenta o processo de construção da minha startup, Meeting Planner.
Também podem me seguir no Twitter, @reifman, ou ver minha página de instrutor, para atualizações.