Pages : 1
#1 Le 17/09/2021, à 10:39
- Dom911
Ubuntu 20.04 (AWS) - PHP ne fonctionne pas
Bonjour,
Avant tout
Je ne suis pas un pro du monde UNIX/Linux. J'ai quelques bases et plus de 20 ans d'expérience dans l'IT, mais pas sur Linux.
Je tente d'installer Apache + mariadb + PHP avec de nombreux pré-requis (NTFS, Watchdog, Firewall, ...) sur AWS sur plusieurs serveurs et de les faire communiquer.
Je remercie donc ceux qui auront la patience d'expliquer. Merci pour votre aide.
Le problème
Lorsque je veux tester mon fichier PHP de test qui contient phphinfo(), la page du serveur me renvoie :
Not Found
The requested URL was not found on this server.
Apache/2.4.41 (Ubuntu) Server at XX.XX.XX.XX Port 80
De la dernière ligne j'en déduis que PHP n'est pas monté.
Le log d'erreur d'Apache indique
sudo cat /var/log/apache2/error.log
donne les informations suivantes
[Fri Sep 17 08:57:20.834843 2021] [http2:warn] [pid 127525] AH10034: The mpm module (prefork.c) is not supported by mod_http2. The mpm determines how things are processed in your server. HTTP/2 has more demands in this regard and the currently selected mpm will just not do. This is an advisory warning. Your server will continue to work, but the HTTP/2 protocol will be inactive.
[Fri Sep 17 08:57:20.853566 2021] [mpm_prefork:notice] [pid 127525] AH00163: Apache/2.4.48 (Ubuntu) OpenSSL/1.1.1f configured -- resuming normal operations
[Fri Sep 17 08:57:20.853585 2021] [core:notice] [pid 127525] AH00094: Command line: '/usr/sbin/apache2'
La commande
sudo apache2 -M
montrait que le module PHP n'était pas monté (php7.4).
La commande
sudo a2enmod php7.4
me donne les erreurs suivantes :
Considering dependency mpm_prefork for php7.4:
Considering conflict mpm_event for mpm_prefork:
ERROR: Module mpm_event is enabled - cannot proceed due to conflicts. It needs to be disabled first!
Considering conflict mpm_worker for mpm_prefork:
ERROR: Could not enable dependency mpm_prefork for php7.4, aborting
J'ai suivi les informations du forum indiquées sur cette page : https://forum.ubuntu-fr.org/viewtopic.php?id=2025856
Le problème reste le même. Il y a un conflit entre mpm_prefork, mpm_event et mpm_worker
J'ai beau chercher sur Google, j'ai toujours la même procédure qui ne fonctionne pas...
Ma configuration
Version Ubuntu
La commande
lsb_release -a
renvoie
Distributor ID: Ubuntu
Description: Ubuntu 20.04.3 LTS
Release: 20.04
Codename: focal
Version d'Apache 2
La commande
apache2 -v
renvoie
Server version: Apache/2.4.48 (Ubuntu)
Server built: 2021-07-01T19:16:08
Version de PHP
La commande
php --version
renvoie
PHP 7.4.23 (cli) (built: Aug 26 2021 15:51:37) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.23, Copyright (c), by Zend Technologies
Modules activés dans Apache
La commande
apache2 -M
renvoie
actions alias asis auth_basic auth_digest authn_anon authn_dbd authn_dbm authn_file authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex
cache cgid cgi charset_lite dav_fs dav dav_lock dbd deflate dir dump_io env expires ext_filter file_cache filter headers http2 ident include info ldap
mem_cache mime mime_magic negotiation reqtimeout rewrite setenvif speling ssl status substitute suexec unique_id userdir usertrack vhost_alias
mpm_itk mpm_prefork php7.4
PS: mem_cache a retourné une erreur
Dernière modification par Dom911 (Le 17/09/2021, à 13:27)
Hors ligne
#2 Le 17/09/2021, à 12:31
- bruno
Re : Ubuntu 20.04 (AWS) - PHP ne fonctionne pas
Bonjour,
Merci de modifier ton message en utilisant les balises [ code ] (icône < >) pour les retours de commandes, extraits de logs et de fichiers. Voir ici
---
Il faut savoir ce que tu veux. Si tu veux utiliser le module PHP d'apache, le mpm_prefork est obligatoire et http2 ne fonctionnera pas.
Si tu veux utiliser un autre MPM (et http2) : mpm_event, tu ne pourras pas utiliser le module PHP d'apache, il faudra utiliser php-fpm.
D'après le dernier retour mpm_prefork et php7.4 sont activés. Cela devrait donc fonctionner.
Je déconseille fortement le mpm_itk qui n'est pas un module officiel Apache, n'est sans doute plus maintenu, plombe les performances, etc. Attention aussi au modules cgi / cgid qu'il ne faut activer que si on a réellement besoin et au modules dav qui sont sources de conflits potentiels avec certaines applications web.
Dernière modification par bruno (Le 17/09/2021, à 12:32)
#3 Le 17/09/2021, à 13:52
- Dom911
Re : Ubuntu 20.04 (AWS) - PHP ne fonctionne pas
Bonjour,
Merci pour ce premier retour.
J'ai mis à jour le message avec les balises [ code ].
L'objectif est le suivant : que chaque vhost est un uid et gid séparé
La documentation fournie note : activer les modules apache pour fonctionner en MPM_PREFORK et MPM_ITK.
MPM_ITK répond au besoin. Par contre, il n'est en effet plus maintenu.
La dernière mise à jour date de du 14.02.2016 !
Que me conseillez vous ?
Merci pour les précautions à prendre vis à vis des modules cgi / cgid et dav.
Hors ligne
#4 Le 17/09/2021, à 15:15
- bruno
Re : Ubuntu 20.04 (AWS) - PHP ne fonctionne pas
L'objectif est le suivant : que chaque vhost est un uid et gid séparé
Dans ce cas il faut utiliser PHP-FPM et non le module php d'Apache et définir un utilisateur par hôte virtuels via les « pools » php-fpm. Tu devrais trouver la documentation nécessaire sur le web, sinon il y a un vieux fil de discussion ici https://forum.ubuntu-fr.org/viewtopic.p … #p21591459 où j'indiquais un exemple de configuration basique.
Dans les grandes lignes :
- il faut virer le module php d'Apache (voire désinstaller les paquets libapache2-mod-php et libapache2-mod-php7.4) ;
- remplacer le mpm_prefork par le mpm-event et virer le mpm_itk ;
- installer et activer le mod proxy_fcgi d'Apache ;
- installer le paquet php-fpm ;
- créer un utilisateur sans login pour chaque hôte virtuel ;
- configurer un pool php⁻fpm pour chaque hôte virtuel avec son propre socket et son utilisateur correspondant ;
- configurer chaque hôte virtuel Apache pour utiliser le socket php-fpm correspondant (cf. lien plus haut);
- j'oublie sûrement des choses…
C'est une configuration plus complexe mais c'est le seul moyen propre (et beaucoup plus performant que le module php d'Apache) d'avoir des utilisateurs différents pour exécuter les scripts de chaque hôte virtuel.
Attention aux tutos que tu peux trouver et qui indiquent d'utiliser un dépôt tiers (ppa:ondrej) pour PHP, c'est inutile et très risqué.
Pages : 1