Apache/Problèmes connus
Logs.
Contrairement à ce qui est dit quand Apache bloque au démarrage, il ne faut pas utiliser codice_1 pour lire les logs car il tronque chaque ligne à 125 caractères. Il faut lancer :
Si les logs ne sont pas assez détaillé, on peut augmenter leur verbosité dans le vhost :
LogLevel info rewrite:trace8
Lecture seule.
S'il est impossible de créer des fichiers ou répertoires depuis un navigateur c'est que le serveur n'autorise pas l'utilisateur "apache" à le faire dans le répertoire du site.
La liste des fichiers apparait au lieu de lancer index.html.
Remplacer 
 DirectoryIndex index.php
par 
 DirectoryIndex index.php index.html
Les fonctions PHP s'affichent sur la page au lieu de s'exécuter.
Si codice_2 indique que le module est déjà installé, c'est peut-être lié à codice_3. Cela peut se régler avec :
vim /etc/apache2/mods-enabled/php7.2.conf
Commenter les lignes :
<IfModule mod_userdir.c>
</IfModule>
Et relancer Apache.
Erreurs.
403 forbidden, client denied by server configuration.
Ce message apparait dans les logs Apache quand le fichier auquel on tente d'accéder est protégé dans apache2.conf, par un codice_4, un codice_5 ou une absence de ce dernier. Dans ce cas, il faut l'ajouter :
<Directory /home>
 Options Indexes FollowSymLinks
 AllowOverride None
 Require all granted
</Directory>
403 forbidden, You don't have permission to access / on this server.
Si les logs parlent de liens symboliques : "Too many levels of symbolic links" ou "Symbolic link not allowed or link target not accessible", remplacer le chemin du site vers lequel pointe le vhost par un dossier qui n'est pas un lien symbolique.
Si les logs parlent de "No matching DirectoryIndex (index.html) found", c'est certainement que l'index.php ne s'exécute pas parce que PHP est mal configuré.
Configuration error: No MPM loaded.
Restaurer le "apache2.conf" d'origine, il doit y avoir une erreur dans la directive codice_6.
Load denied by X-Frame-Options: ... does not permit cross-origin framing.
Il faut juste autoriser les s vers votre site, en commentant dans codice_7 la ligne qui commence comme :
 Header always set X-FRAME-OPTIONS "SAMEORIGIN"
Missing suexec binary.
Installer le module :
sudo apt-get install apache2-suexec-custom
suEXEC is disabled.
Vérifier que le module est activé.
Erreurs vhost.
Les problèmes suivants peuvent survenir lors des relances Apache.
codice_8.
Vérifier que le module est activé.
codice_9.
Un utilisateur Unix appelé dans la configuration n'existe pas. Il faut donc le créer :
useradd Utilisateur1
codice_10.
Un groupe Unix appelé dans la configuration n'existe pas. Il faut donc le créer :
groupeadd Groupe1
codice_11... codice_12... codice_13.
Un répertoire Unix appelé dans la configuration n'existe pas. Il faut donc le créer :
mkdir /etc/apache2/logs
codice_14.
Cela peut survenir quand PHP rencontre une erreur. Pour la connaitre précisément, il faut lancer le .php en shell (sans Apache). Exemple :
su www-data
php5 -q SendMail.php
 SMTP Error: Could not connect to SMTP host.
php5 -r "chown('/home/Compte2', 'Compte1');"
 PHP Warning: chown(): Operation not permitted in Command line code on line 1
chown Compte1 /home/Compte2
 chown: modification du propriétaire de «/home/Compte2»: Opération non permise
codice_15.
Le fichier .php vers lequel renvoie le vhost n'existe pas (404). Sinon il faut ajouter au vhost codice_16.
Erreurs HTTPS.
Le module d'Apache est activée mais son vhost est absent ou sa configuration ne contient pas codice_17.
Il faut refaire comme il faut la configuration Apache ci-dessus. 
C'est que la connexion fonctionne, les visiteurs doivent juste acquitter le message de leur navigateur "Cette connexion n'est pas certifiée".
Sinon, ajouter un vhost sur le port 443 en plus du 80.

Il faut signer son certificat avec un autre.
Si l'erreur vient de PHP, il faut ensuite renseigner le certificat CA dans deux champs du php.ini.
à chaque relance Apache.
Vérifier la présence de la ligne suivante dans la configuration : codice_18. Sinon, fdaire sauter le mot de passe :
 openssl rsa -in nomdedomaine.fr.key -out nomdedomaine.fr.key.nopass
Il faut remplacer HTTP par HTTPS dans le code source du site Web.
Dans les logs SSL.
Il faut générer la clé en utilisant un .
Le mot de passe du .csr contient des caractères spéciaux incompatibles, comme ! ou _. Il faut se contenter de l'alphanumérique.
Dans les logs Apache.
Réinstaller clé SSL.
Le .cert est introuvable.
Il faut convertir le certificat SSL ainsi :
openssl x509 -inform der -in /etc/apache2/ssl/apache.crt -outform PEM -out /etc/apache2/ssl/apache.pem
vim /etc/apache2/sites-enabled/default-ssl.conf
service apache2 restart
Sinon il faut retirer les du certificat.
Sinon il faut retirer les autres fichiers du dossier contenant la clé et de celui du certificat (un autre), en leur conférant au maximum du codice_19.
Le certificat doit être un fichier .pem et la clé .key. Il est possible de le vérifier avec la commande suivante :
$ (openssl x509 -noout -modulus -in /etc/ssl/certs/ssl-cert-snakeoil.pem | openssl md5 ;openssl rsa -noout -modulus -in /etc/ssl/private/ssl-cert-snakeoil.key | openssl md5) | uniq
(stdin)= 8cf9b840c3239f653be542149497f047
Quand les deux certificats correspondent il n'y a qu'une seule ligne, comme ci-dessus. Il faut donc retrouver le bon ou régénérer la paire. Pour y voir plus clair, la commande codice_20 permet de les identifier :
$ file /etc/ssl/*
nomdedomaine.fr.crt: PEM certificate request
nomdedomaine.fr.csr: PEM certificate request
nomdedomaine.fr.key: PEM RSA private key
nomdedomaine.fr.pem: PEM certificate
nomdedomaine.fr.pwd: ASCII text
certs: directory
openssl.cnf: ASCII text
private: directory
apache.key: PEM RSA private key
apache.crt: PEM certificate

Ce message peut survenir au redémarrage d'Apache si un vhost est incorrect.
Par exemple si SSLCertificateFile ne correspond à pas SSLCertificateKeyFile.
Le certificat installé est prévu pour un autre domaine ou sous-domaine. Il faut peut-être en acheter un pour tous les sous-domaines, ce qui se dit "certificats SSL à validation de domaine" ("" en anglais).
Soit on peut regénérer le fichier de la directive codice_21, soit on fait sauter le mot de passe demandé par la clé : codice_22
Erreurs .htaccess.
Inopérant.
Si le .htaccess ne produit aucune redirection, vérifier que le module Apache est bien activé :
 a2enmod rewrite
Et que la directive suivante figure au moins dans un répertoire parent du .htaccess :
 AllowOverride All
Puis relancer Apache.
Dans le vhost du site, remplacer "*:80" par "IP_du_serveur:80".
Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace..
Il existe une redirection circulaire.
Erreurs CGI.
Remplacer un codice_23 par un codice_24. Sinon, regarder les logs. Par exemple, cela peut provenir de codice_25 => commenter la directive codice_26.
Lister ce répertoire est interdit, il faut donc connaitre l'URL des fichiers qu'il contient.
Remplacer le chemin après le . Par exemple : 
En-tête manquante dans le contenu affiché par le script (ex : déplacer l'importation avant codice_32). Mais cela peut aussi être dû à un message d'erreur dans le script à exécuter.
L'en-tête n'est pas adaptée (ex : remplacer codice_33 par codice_34 s'il y a un codice_35 après).
Sinon consulter les logs Apache...