71 votes

Mise à jour vers 16.04. php7 ne fonctionne pas dans le navigateur

Je viens de passer de la 14.10 à la 16.04 et je ne sais pas comment configurer PHP 7 dans Apache. J'ai modifié le fichier php7.0.conf pour décommenter les dernières lignes, redémarré apache2 et aucun changement.

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, j'obtiens une erreur sur phpadmin disant que le mbstring est manquant.

82voto

Joe the Person Points 5090

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

De la Guide du serveur :

sudo apt install php libapache2-mod-php

Cette commande installera PHP et le module PHP d'Apache 2. Configurez simplement Apache comme précédemment ( sudo a2enmod php7.0 qui, je pense, allume le module).


Votre 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.

41voto

Videonauth Points 31896

Pour que php7 fonctionne avec votre serveur, vous devez effectuer une certaine configuration :

1. Assurez-vous d'éliminer toute trace de php/php5

Ouvrir un terminal Ctrl + Alt + T et :

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

La sortie doit no contiennent des php5.conf o php5.load mais si c'est le cas, faites ce qui 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 le php7.0.conf y 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 en venons maintenant au /etc/apache2/conf-enabled répertoire. Supprimez toute trace de php/php5 ici aussi en sudo rm <name>

Ensuite, si nécessaire, faites-le :

# 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émarrage d'Apache2

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

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 fait de passer à travers moins vous permet de faire défiler facilement vers le haut et vers le bas, q quitte la sortie).

Si su error.log contient de nombreux (et je veux dire littéralement un amas de) certains MIBS not found faites ce qui suit :

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

Le contrôle de nouveau le error.log il ne devrait plus contenir que 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é.

14voto

Tom Idar Wangberg Points 141

J'ai aussi ce problème.

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

Tout ce qu'il fallait, c'était :

sudo apt-get purge php*

php7 sera supprimé, il suffira ensuite de le réinstaller :

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

8voto

Maciej Points 81

Dans mon cas, ce n'est pas seulement le php qui ne fonctionne pas mais aussi le phpmyadmin. J'ai fait comme ça, étape par étape.

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 ensuite à :

gksu gedit /etc/apache2/apache2.conf

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

Qui font un accord avec tous les problèmes

8voto

patrick Points 205

La solution que j'ai trouvée pour ce problème est le paramètre par défaut de PHP.INI pour short_open_tag. Par défaut, il est réglé sur 'Off'. Mon code PHP commençait par

   <?

au lieu de

   <?php

Si j'ai activé la balise short_open_tag (en changeant 'Off' en 'On' dans mon php.ini) et réinitialisé le serveur apache ( sudo service apache2 restart ) et le PHP est revenu en vie.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X