Atualize para 16.04. php7 não funciona no navegador

Atualize para 16.04. php7 não funciona no navegador

Acabei de atualizar de 14.10 para 16.04 e não tenho certeza de como configurar o PHP 7 no Apache. Eu modifiquei o arquivo php7.0.conf para descomentar as últimas linhas, reiniciei o apache2 e nenhuma alteração.

Preciso alterar a configuração do Apache2 para permitir o php?

O PHP funciona na linha de comando, então tenho certeza de que o php está instalado corretamente.

Além disso, recebo um erro no phpadmin dizendo que o mbstring está faltando.

Responder1

Assim como antes, você deve instalar o PHP para Apache.

DeGuia do servidor:

sudo apt install php libapache2-mod-php

Esse comando instalará o PHP e o módulo Apache 2 PHP. Basta configurar o Apache como antes ( sudo a2enmod php7.0acho que ativará o módulo).


Seu mbstringproblema é semelhante - você precisa instalar essa extensão:

sudo apt install php7.0-mbstring

Para outros módulos ausentes, haverá coisas semelhantes que deverão ser instaladas também.

Responder2

Para configurar o php7 para rodar com seu servidor você precisa fazer algumas configurações:

1. Certifique-se de remover quaisquer vestígios dephp/php5

Abra um terminal Ctrl+ Alt+ Te:

cd /etc/apache2/mods-enabled
ls -la

A saída devenãocontenha qualquer php5.confou php5.load, mas se contiver, faça o seguinte:

# this is the proper way of disabling modules
sudo a2dismod php5

# run this only if the above command didn't remove the php5 sym-links
sudo rm php5.load
sudo rm php5.conf

Agora adicione o php7.0.confe php7.0.loadem vez disso:

# this is the proper way of enabling modules
sudo a2enmod php7.0

# run this only if the above command didn't create the php7.0 sym-links
sudo ln -s php7.0.conf ../mods-available/php7.0.conf
sudo ln -s php7.0.load ../mods-available/php7.0.load

A saída de ls -la php*deve ficar assim:

lrwxrwxrwx 1 root root 29 Apr 15 03:55 php7.0.conf -> ../mods-available/php7.0.conf
lrwxrwxrwx 1 root root 29 Apr 15 03:55 php7.0.load -> ../mods-available/php7.0.load

Depois de lidar com os módulos, chegamos agora ao /etc/apache2/conf-enableddiretório. Remova quaisquer vestígios de php/php5 aqui tambémsudo rm <name>

Então, se necessário, faça:

# the proper way of enabling configs
sudo a2enconf php7.0-cgi
sudo a2enconf php7.0-fpm

# do those commands only if the above didn't work out
sudo ln -s php7.0-cgi.conf ../conf-available/php7.0-cgi.conf
sudo ln -s php7.0-fpm.conf ../conf-available/php7.0-fpm.conf

A saída de ls -la php*deve ficar assim:

lrwxrwxrwx 1 root root 33 Apr 21 17:00 php7.0-cgi.conf -> ../conf-available/php7.0-cgi.conf
lrwxrwxrwx 1 root root 33 Apr 21 17:01 php7.0-fpm.conf -> ../conf-available/php7.0-fpm.conf

2. Reiniciando o Apache2

Antes de reiniciar o Apache, certifique-se de limpar o Apache error.loge reinicie:

sudo su
> /var/log/apache2/error.log
exit
sudo service apache2 restart

Agora verifique a error.logemissão cat /var/log/apache2/error.log | less(passar por menos permite rolar facilmente para cima e para baixo, qsai da saída).

Se o seu error.logcontém muitos (e eu literalmente quero dizer umamontoarde) alguns MIBS not foundfazem o seguinte:

sudo apt install libsnmp-dev
sudo net-snmp-config --snmpconfpath
sudo apt-get install snmp snmp-mibs-downloader
sudo su
> /var/log/apache2/error.log
exit
sudo service apache2 restart

A verificação novamente error.logagora deve conter apenas 3 linhas:

[Sat Apr 23 01:39:07.504005 2016] [mpm_prefork:notice] [pid 1647] AH00169: caught SIGTERM, shutting down
[Sat Apr 23 01:39:08.685774 2016] [mpm_prefork:notice] [pid 9590] AH00163: Apache/2.4.18 (Ubuntu) mod_perl/2.0.9 Perl/v5.22.1 configured -- resuming normal operations
[Sat Apr 23 01:39:08.685938 2016] [core:notice] [pid 9590] AH00094: Command line: '/usr/sbin/apache2'

Seu Apache com php7.0 agora deve estar configurado corretamente.

Responder3

Eu também tenho esse problema.

Isso me ajudou a excluir todo o PHP e reinstalar o php7.

Tudo o que era necessário era:

sudo apt-get purge php*

php7 será deletado, depois é só reinstalar:

sudo apt-get install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi  php7.0 libapache2-mod-php7.0

Responder4

A solução que encontrei para este problema foi a configuração padrão do PHP.INI para short_open_tag. Por padrão, isso está definido como 'Desligado'. Meu código PHP começou com

   <?

em vez de

   <?php

Se habilitado o short_open_tag (alterando 'Off' para 'On' no meu php.ini) e resetei o servidor apache ( sudo service apache2 restart) e o PHP voltou a funcionar.

informação relacionada