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.
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.
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é.
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
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.
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
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.
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 carlibphp7.so
inclus avecphp-Apache
ne fonctionne pas avecmod_mpm_event
, mais ne fonctionnera quemod_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 ).