Passez à 16.04. php7 ne fonctionne pas dans le navigateur

64

Je viens de mettre à jour du 14.10 au 16.04 et je ne sais pas comment configurer PHP 7 en apache. J'ai modifié le fichier php7.0.conf pour supprimer les dernières lignes, redémarrer apache2 et ne pas modifier.

Dois-je modifier la configuration d’apache2 pour autoriser php?

PHP fonctionne à partir de la ligne de commande, donc je suis sûr que le php est correctement installé.

De plus, je reçois une erreur sur phpadmin indiquant que le mbstring est manquant.

    
posée David Wright 23.04.2016 - 00:54
la source

7 réponses

78

Comme précédemment, vous devez installer PHP pour Apache.

À partir du Guide du serveur :

sudo apt install php libapache2-mod-php

Cette commande va installer PHP et le module PHP Apache 2. Configurez simplement Apache comme avant ( sudo a2enmod php7.0 , je pense, allumera le module).

Votre problème mbstring est similaire - vous devez installer cette extension:

sudo apt install php7.0-mbstring

Pour les autres modules manquants, il y aura des choses similaires à installer également.

    
réponse donnée Thomas Ward 23.04.2016 - 01:10
la source
39

Pour configurer php7 afin qu'il fonctionne avec votre serveur, vous devez effectuer certaines configurations:

1. Assurez-vous de supprimer les traces de php/php5

Ouvrez un terminal Ctrl + Alt + T et:

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

La sortie doit ne pas contenir php5.conf ou php5.load , mais si c'est le cas, procédez comme suit:

# 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

Ajoutez maintenant les php7.0.conf et php7.0.load à la place:

# 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

La sortie de ls -la php* devrait ressembler à ceci:

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

Après avoir traité les modules, nous arrivons maintenant au répertoire /etc/apache2/conf-enabled . Supprimez ici toutes les traces de php / php5 par sudo rm <name>

Ensuite, si nécessaire:

# 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

La sortie de ls -la php* devrait ressembler à ceci:

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. Redémarrer Apache2

Avant de redémarrer Apache, assurez-vous de nettoyer Apache error.log , puis redémarrez:

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

Maintenant, vérifiez le error.log en émettant cat /var/log/apache2/error.log | less (le passage par less vous permet de faire défiler vers le haut et vers le bas, q quitte la sortie).

Si votre error.log contient beaucoup (et je veux dire littéralement un tas ), certains MIBS not found effectuent les opérations suivantes:

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

La vérification à nouveau du error.log devrait maintenant contenir seulement 3 lignes:

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

Votre Apache avec php7.0 devrait maintenant être correctement configuré.

    
réponse donnée Videonauth 23.04.2016 - 01:40
la source
11

J'ai aussi ce problème.

Cela m'a aidé à supprimer tout PHP et à réinstaller php7.

Il suffisait de:

sudo apt-get purge php*

php7 sera supprimé, ensuite juste pour réinstaller:

sudo apt-get install php7.0-mysql php7.0-curl php7.0-json php7.0-cgi  php7.0 libapache2-mod-php7.0
    
réponse donnée Tom Idar Wangberg 14.08.2016 - 01:21
la source
7

En ce qui me concerne, non seulement le php ne fonctionnait pas, mais phpmyadmin et moi aussi, pas à pas, comme ça

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

Et puis à:

gksu gedit /etc/apache2/apache2.conf

Dans la dernière ligne, j'ajoute Include /etc/phpmyadmin/apache.conf

Cela fait un accord avec tous les problèmes

    
réponse donnée Maciej 05.05.2016 - 15:11
la source
7

La solution que j'ai trouvée pour ce problème était le paramètre PHP.INI par défaut pour short_open_tag. Par défaut, cette option est désactivée. Mon code PHP a commencé avec

   <?

au lieu de

   <?php

Si activé, le short_open_tag (en changeant "Off" en "On" dans mon php.ini) et réinitialise le serveur Apache ( sudo service apache2 restart ) et PHP est revenu en vie.

    
réponse donnée patrick 27.10.2016 - 17:07
la source
0

lien

sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
service apache2 restart

Remarque: Ce qui précède est requis, car libphp7.so inclus avec php-apache ne fonctionne pas avec mod_mpm_event , mais fonctionnera uniquement à mod_mpm_prefork . ( FS # 39218 )

Sinon, vous obtiendrez l'erreur suivante:

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

Vous pouvez aussi utiliser mod_proxy_fcgi (voir Utiliser php-fpm et mod_proxy_fcgi ci-dessous ). ).

    
réponse donnée user539644 04.05.2016 - 22:31
la source
0

Je pourrais aussi exécuter des scripts PHP avec succès depuis la ligne de commande sur Ubuntu 16.04, mais pas dans aucun navigateur. Pour tenter de résoudre le problème, j'ai purgé mes copies existantes de php7.0 et apache2. Par la suite, je me suis réinstallé à la fois sur la ligne de commande, ainsi que sur la bibliothèque PHP d'Apache2. La frustration a suivi lorsque j'ai essayé de lancer "a2enmod php7.0", qui m'a informé que le module php7.0 n'existait pas malgré le fait que je pouvais à nouveau exécuter des scripts php à partir de la ligne de commande. L'instinct a commencé. En ouvrant Synaptic, j'ai découvert que lorsque j'ai installé la bibliothèque apache2 php à partir de la ligne de commande, j'ai installé uniquement libapache2-mod-php7.0 et j'avais oublié d'installer le "wrapper" libapache2-mod- php, sans lequel le premier ne fonctionnera pas.

    
réponse donnée Bill Wilken 02.09.2016 - 19:43
la source

Lire d'autres questions sur les étiquettes