Atualize para 16.04. php7 não funciona no navegador

63

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 mudança.

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

PHP funciona a partir da linha de comando, portanto, tenho certeza de que o php está instalado corretamente.

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

    
por David Wright 23.04.2016 / 00:54

7 respostas

77

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

No Guia do servidor :

sudo apt install php libapache2-mod-php

Esse comando instalará o PHP e o módulo PHP do Apache 2. Simplesmente configure o Apache como antes ( sudo a2enmod php7.0 , eu acho, ligará o módulo).

Seu problema com mbstring é semelhante. É necessário instalar essa extensão:

sudo apt install php7.0-mbstring

Para outros módulos ausentes, haverá coisas semelhantes a serem instaladas também.

    
por Thomas Ward 23.04.2016 / 01:10
37

Para configurar o php7 para rodar com seu servidor, você precisa fazer alguma configuração:

1. Certifique-se de remover qualquer vestígio de php/php5

Abra um terminal Ctrl + Alt + T e:

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

A saída deve não conter php5.conf ou php5.load , mas se ocorrer, 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

Adicione agora php7.0.conf e php7.0.load :

# 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 ao diretório /etc/apache2/conf-enabled . Remova qualquer vestígio de php / php5 aqui também por sudo 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, limpe o Apache error.log e reinicie:

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

Agora, verifique o error.log emitindo cat /var/log/apache2/error.log | less (a passagem por menos permite que você navegue para cima e para baixo com facilidade, q sai da saída).

Se o seu error.log contiver muitos (e eu literalmente significar um heap ), alguns MIBS not found farão 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 de que error.log agora deve conter apenas três 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 o php7.0 agora deve estar configurado corretamente.

    
por Videonauth 23.04.2016 / 01:40
10

Eu também tenho esse problema.

Ele me ajudou a deletar todo o PHP e reinstalar o php7.

Tudo o que foi necessário foi:

sudo apt-get purge php*

O php7 será excluído, apenas para reinstalar:

sudo apt-get install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi  php7.0 libapache2-mod-php7.0
    
por Tom Idar Wangberg 14.08.2016 / 01:21
7

Eu sou o meu caso, não só o php não estava funcionando, mas também o phpmyadmin eu fiz passo a passo assim

sudo apt install php libapache2-mod-php
sudo apt install php7.0-mbstring
sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
service apache2 restart

E depois para:

gksu gedit /etc/apache2/apache2.conf

Na última linha, adiciono Include /etc/phpmyadmin/apache.conf

Isso faz um acordo com todos os problemas

    
por Maciej 05.05.2016 / 15:11
7

A solução que encontrei para esse problema foi a configuração PHP.INI padrão para short_open_tag. Por padrão, isso é definido como 'Off'. Meu código PHP começou com

   <?

em vez de

   <?php

Se habilitado o short_open_tag (mudando 'Off' para 'On' no meu arquivo php.ini) e reiniciando o servidor apache ( sudo service apache2 restart ) e o PHP retornado vivo.

    
por patrick 27.10.2016 / 17:07
0

Sites

sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
service apache2 restart

Nota: O acima é necessário, porque libphp7.so incluído com php-apache não funciona com mod_mpm_event , mas funcionará apenas mod_mpm_prefork . ( FS # 39218 )

Caso contrário, você receberá o seguinte erro:

Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe.  You need to recompile PHP.
AH00013: Pre-configuration failed
httpd.service: control process exited, code=exited status=1

Como alternativa, você pode usar mod_proxy_fcgi (veja Usando o php-fpm e mod_proxy_fcgi abaixo ).

    
por user539644 04.05.2016 / 22:31
0

Eu também poderia executar scripts php com sucesso a partir da linha de comando no Ubuntu 16.04, mas não em qualquer navegador. Em uma tentativa de resolver o problema, eu removi minhas cópias existentes do php7.0 e do apache2. Depois disso, eu reinstalei os dois a partir da linha de comando, incluindo, assim como a biblioteca php do apache2. A frustração se seguiu quando tentei executar o "a2enmod php7.0", que me informou que o módulo php7.0 não existia apesar do fato de que mais uma vez eu consegui executar scripts php a partir da linha de comando. O instinto entrou em ação. Ao abrir o Synaptic, descobri que quando instalei a biblioteca php apache2 a partir da linha de comando, instalei apenas libapache2-mod-php7.0 e tinha esquecido também de instalar o "wrapper", libapache2-mod- php, sem o qual o primeiro não funcionará.

    
por Bill Wilken 02.09.2016 / 19:43