Aggiornamento alla 16.04. php7 non funziona nel browser

64

Ho appena aggiornato dal 14.10 al 16.04 e non sono sicuro di come configurare PHP 7 in Apache. Ho modificato il file php7.0.conf per rimuovere il commento dalle ultime righe, riavviato apache2 e nessuna modifica.

Devo modificare l'impostazione di apache2 per consentire php?

PHP funziona dalla riga di comando quindi sono sicuro che il php sia installato correttamente.

Inoltre, ho ricevuto un errore su phpadmin che diceva che manca l'mbstring.

    
posta David Wright 23.04.2016 - 00:54

7 risposte

78

Proprio come prima, devi installare PHP per Apache.

Dalla Guida del server :

sudo apt install php libapache2-mod-php

Tale comando installerà PHP e il modulo PHP di Apache 2. Configurare semplicemente Apache come prima ( sudo a2enmod php7.0 , penso, accenderà il modulo).

Il tuo problema con mbstring è simile - devi installare quell'estensione:

sudo apt install php7.0-mbstring

Per altri moduli mancanti ci saranno anche cose simili da installare.

    
risposta data Thomas Ward 23.04.2016 - 01:10
39

Per configurare php7 per funzionare con il tuo server devi fare una configurazione:

1. Assicurati di rimuovere eventuali tracce di php/php5

Apri un terminale Ctrl + Alt + T e:

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

L'output dovrebbe not contenere qualsiasi php5.conf o php5.load , ma se lo fa, fai quanto segue:

# 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

Ora aggiungi php7.0.conf e php7.0.load invece:

# 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

L'output di ls -la php* dovrebbe assomigliare a questo:

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

Dopo aver affrontato i moduli ora arriviamo alla directory /etc/apache2/conf-enabled . Rimuovi anche eventuali tracce di php / php5 da sudo rm <name>

Quindi, se necessario, fare:

# 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

L'output di ls -la php* dovrebbe assomigliare a questo:

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. Riavvio di Apache2

Prima di riavviare Apache, assicurati di pulire Apache error.log , quindi riavvia:

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

Ora controlla error.log emettendo cat /var/log/apache2/error.log | less (il piping through less ti consente di scorrere facilmente verso l'alto e verso il basso, q esce dall'output).

Se il tuo error.log contiene molti (e intendo letteralmente un heap di) alcuni MIBS not found procedi come segue:

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

Il controllo di nuovo error.log ora dovrebbe contenere solo 3 righe:

[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'

Ora il tuo Apache con php7.0 dovrebbe essere configurato correttamente.

    
risposta data Videonauth 23.04.2016 - 01:40
11

Ho avuto anche questo problema.

Mi ha aiutato a cancellare tutto il PHP e reinstallare php7.

Tutto ciò che era necessario era:

sudo apt-get purge php*

php7 verrà eliminato, in seguito solo per reinstallare:

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

Nel mio caso, non solo il php non funzionava ma anche phpmyadmin l'ho fatto passo dopo passo in quel modo

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 poi a:

gksu gedit /etc/apache2/apache2.conf

Nell'ultima riga aggiungo Include /etc/phpmyadmin/apache.conf

Questo è un accordo con tutti i problemi

    
risposta data Maciej 05.05.2016 - 15:11
7

La soluzione che ho trovato per questo problema era l'impostazione PHP.INI predefinita per short_open_tag. Di default questo è impostato su 'Off'. Il mio codice PHP è iniziato con

   <?

invece di

   <?php

Se abilitato, il tag short_open_tag (cambiando 'Off' a 'On' nel mio php.ini) e resetta il server Apache ( sudo service apache2 restart ) e PHP è tornato in vita.

    
risposta data patrick 27.10.2016 - 17:07
0

link

sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
service apache2 restart

Nota: quanto sopra è obbligatorio, poiché libphp7.so incluso con php-apache non funziona con mod_mpm_event , ma funzionerà solo mod_mpm_prefork . ( FS # 39218 )

Altrimenti ti verrà visualizzato il seguente errore:

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

In alternativa, puoi utilizzare mod_proxy_fcgi (vedi Utilizzo di php-fpm e mod_proxy_fcgi di seguito ).

    
risposta data user539644 04.05.2016 - 22:31
0

Anch'io posso eseguire correttamente script php dalla riga di comando su Ubuntu 16.04, ma non in nessun browser. Nel tentativo di risolvere il problema ho eliminato le mie copie esistenti di php7.0 e apache2. Successivamente ho reinstallato sia dalla riga di comando che dalla libreria php di apache2. La frustrazione seguita quando ho tentato di eseguire "a2enmod php7.0", che mi ha informato che il modulo php7.0 non esisteva nonostante il fatto che ancora una volta ero in grado di eseguire script php dalla riga di comando. L'istinto è iniziato. Aprendo Synaptic, ho scoperto che quando ho installato la libreria php apache2 dalla riga di comando, ho installato solo libapache2-mod-php7.0, e avevo dimenticato anche di installare il "wrapper", libapache2-mod- php, senza il quale il primo non funzionerà.

    
risposta data Bill Wilken 02.09.2016 - 19:43

Leggi altre domande sui tag