web-dev-qa-db-fra.com

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

Je viens de mettre à jour de 14.10 à 16.04 et je ne suis pas sûr de savoir comment configurer PHP 7 dans Apache. J'ai modifié le fichier php7.0.conf pour commenter les dernières lignes, redémarrer Apache2 et aucune modification.

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 la chaîne de caractères est manquante.

68
David Wright

Comme avant, vous devez installer PHP pour Apache.

Depuis le Guide du serveur :

Sudo apt install php libapache2-mod-php

Cette commande installera PHP et le module Apache 2 PHP. Configurez simplement Apache comme auparavant (Sudo a2enmod php7.0, je pense, activera le module).


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

Sudo apt install php7.0-mbstring

Pour les autres modules manquants, des tâches similaires devront également être installées.

81
Thomas Ward

Pour configurer php7 avec votre serveur, vous devez effectuer certaines configurations:

1. Assurez-vous de supprimer toute trace de php/php5

Ouvrir un terminal Ctrl+Alt+T et:

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

La sortie devrait pas contenir le code 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

Maintenant, ajoutez 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 toutes les traces de php/php5 ici aussi par Sudo rm <name>

Ensuite, si nécessaire, faites:

# 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 code 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 fait de parcourir moins vous permet de faire défiler facilement en haut et en bas, q quitte la sortie).

Si votre error.log en contient plusieurs (et je veux dire littéralement un tas sur), un MIBS not found procédez comme 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

La vérification à nouveau le error.log ne devrait maintenant 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é.

39
Videonauth

J'ai aussi ce problème.

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

Tout ce qui était nécessaire était:

Sudo apt-get purge php*

php7 sera supprimé, juste après 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
12
Tom Idar Wangberg

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

   <?

au lieu de

   <?php

Si activé, short_open_tag (en changeant 'Off' sur 'On' dans mon php.ini) et réinitialise le serveur Apache (Sudo service Apache2 restart) et PHP est revenu vivant.

7
patrick

Im mon cas, non seulement le php ne fonctionnait pas, mais phpmyadmin aussi je l'ai fait étape par étape 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 ensuite à:

gksu gedit /etc/Apache2/Apache2.conf

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

Cela fait face à tous les problèmes

7
Maciej

Moi aussi, je pouvais exécuter des scripts php avec succès à partir de la ligne de commande sous Ubuntu 16.04, mais 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, j'ai réinstallé les deux à partir de la ligne de commande, y compris de la bibliothèque php d'Apache2. La frustration a suivi lorsque j'ai tenté d'exécuter "a2enmod php7.0", qui m'a informé que le module php7.0 n'existait pas malgré le fait qu'une fois encore, j'ai pu 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’avais installé la bibliothèque Apache2 php à partir de la ligne de commande, j’installais uniquement libapache2-mod-php7.0, et que j’avais oublié d’installer le "wrapper", libapache2-mod php, sans quoi l'ancien ne fonctionnerait pas.

0
Bill Wilken

https://wiki.archlinux.org/index.php/Apache_HTTP_Server

Sudo a2dismod mpm_event
Sudo a2enmod mpm_prefork
service Apache2 restart
Remarque: La procédure ci-dessus est obligatoire car libphp7.so inclus avec php-Apache ne fonctionne pas avec mod_mpm_event, mais ne fonctionnera que mod_mpm_prefork à la place. ( 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 également utiliser mod_proxy_fcgi (voir tilisation de php-fpm et de mod_proxy_fcgi ci-dessous ).

0
user539644