Apache2 Debian probleme de logs à certains endroits

Fermé
nocram18 Messages postés 471 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 16 juillet 2017 - 20 juin 2017 à 15:09
nocram18 Messages postés 471 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 16 juillet 2017 - 16 juil. 2017 à 11:06
Bonjour à tous,

J'ai un site sous apache2 qui tourne depuis quelques mois, je suis en train de rebidouiller deux trois petits trucs mais cela ne fonctionne pas.

Pour faire simple j'ai mon site var/www/site1/log.php, ce dernier fichier m'affiche et enregistre les logs des visiteurs. Il fontionne niquel je n'ai pas de problème avec.

Maintenant mon soucis, j'ai un "maintenance", qui est dans var/www/maintenance/log.php. J'ai fais une redirection de site1 vers maintenance avec un .htaccess.
Mon fichier log.php n'arrive pas à enregistrer mes logs. Comme si il lui manqué quelques choses. Je ne sais pas quoi.
Mes pages php fonctionne dessus, mais mon log.php ne s’exécute pas pour ouvrir log.txt et écrire dedans, alors que sur l'autre cela fonctionne.

Je pense que cela est dû au problème d'alias dans /etc/apache2/sites-avaibles/maintenance.conf.

Je ne sais pas ce que vous pensez.

En vous remerciant d'avance ^^ ++




3 réponses

mamiemando Messages postés 33433 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 décembre 2024 7 809
21 juin 2017 à 10:14
Bonjour,

Le truc qui me perturbe un peu, c'est que tes logs devraient être dans
/var/log/apache2/...
, puisque la partie dans
/var/www
est sensé contenir le site lui-même (et uniquement ça).

Le chemin du fichier de log se configure dans ton vhost apache.
https://cwiki.apache.org/confluence/display/httpd/ExampleVhosts

<VirtualHost *:80>
ServerName www.foo.com

# if you want this vhost to listen to extra names, uncomment the next line
# ServerAlias foo.com www.bar.com bar.com

DocumentRoot /var/www/www.foo.com/htdocs

CustomLog /var/log/apache/www.foo.com-access.log combined
ErrorLog /var/log/apache/www.foo.com-error.log
</VirtualHost>


Ensuite ton site devrait idéalement fonctionner sans redirection. Les redirections servent à éviter que des liens ne soient cassés sur le site, ou à gérer certains framework (genre wordpress), mais pas à "rediriger" l'endroit où tes logs sont inscrits.

Les htaccess ne sont pas fait pour cela non plus. Ils servent typiquement à rattraper des erreurs 404, mettre un système de login/mot de passe pour accéder à un dossier du site, etc. Du coup j'ai un peu de mal à suivre ce que tu as fait.

Bonne chance
1
nocram18 Messages postés 471 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 16 juillet 2017 25
21 juin 2017 à 17:17
Bonjour,

Merci de ta réponse.

Mes logs sont bien inscrits dans ce dossier, ceci n'est pas un problème. Mais j'aimerai surtout faire fonctionner ma page log.php qui enregistre les logs dans logs.txt (par exemple).

Mon site fonctionne avec redirection car j'utilise le package GeoIP qui permet de bloquer le site selon le pays. Mais si par exemple je bloque la FRANCE, le .htaccess ne le rédiregera pas vers la page 500 de mon site mais vers d'apache.
Je me suis donc dis pour contrer cela de lui faire des vhosts (un pour la maintenance et un pour la redirection).
Ce qui fonctionne, lorsque la personne essaye de se connecter si son pays est interdi, elle est redirigée vers le vhost redirection, cela fonctionne sans problème.
Mais dans ce dernier je n'arrive pas à lui autoriser mes logs apache, ni pour celui de maintenance.

Cela me permettrai surtout de savoir le nombre de personnes redirigées, quelles IPs, quels pays ....

Je sais que ce n'est pas simple, si personne ne trouve je comprendrai.

Voici mon vhost :

Alias /ForwardingPage "/var/www/ForwardingPage/"
<Directory "/var/www/ForwardingPage">
  Options FollowSymLinks
  AllowOverride none
 
  SetEnv HOME /var/www/ForwardingPage
  SetEnv HTTP_HOME /var/www/ForwardingPage
</Directory>



Merci bonne fin de journée. :D
0
mamiemando Messages postés 33433 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 décembre 2024 7 809
6 juil. 2017 à 09:26
Et du coup il ne suffit pas de renommer
log.php
en
/var/www/ForwardingPage/index.php
? Car quand l'utilisateur sera redirigé vers ce dossier, a priori le script index.php sera chargé.

Bonne chance
0
nocram18 Messages postés 471 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 16 juillet 2017 25
6 juil. 2017 à 11:58
Bonjour,

Je ne comprends pas ce que tu veux dire.
La personne est redirigée vers ForwardingPage sans soucis et tombe sur mon index.php sans soucis non plus.
Mais le log ne fonctionne pas, je ne comprends pas pourquoi en le renommant cela changera qqch ?

Je ne troue rien d'intéressant dans la conf de php.

Bonne journée.
0
mamiemando Messages postés 33433 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 décembre 2024 7 809
Modifié le 7 juil. 2017 à 09:45
En fait ce que je n'ai pas très bien compris, c'est si dans
log.php
tu fais un
fopen
et tu écris ton fichier de log à la main, ou si tu veux que ce soit fait par apache au niveau de la configuration apache.

Sur le coup j'avais n'avais pas bien compris ce que tu entendais par le log ne fonctionne pas.

En tout cas écrire le fichier à la main est une méthode que pour le coup, tu es sûr de pouvoir faire marcher...
- récupérer la date courante
- récupérer l'IP du client
- récupérer le pays correspondant

Du coup si tu ne t'en sors pas avec apache, je préconise cette solution.
0
nocram18 Messages postés 471 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 16 juillet 2017 25 > mamiemando Messages postés 33433 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 décembre 2024
Modifié le 11 juil. 2017 à 09:33
Salut,

Merci de ta patience.

C'est ce que j'expliquais dans la problématique.

Voici mon code
log.php
. Ce dernier fonctionne sur le site principal est écrit bien dans le fichier
log_site.html
.

<?php
$TextFile = "log_site.html";
$contents = file_get_contents($TextFile);
$CurrentDate = date("d-m-y H:i");
$ip = (isset($_SERVER)) ? $_SERVER['REMOTE_ADDR'] : $HTTP_SERVER_VARS['REMOTE_ADDR'];
$url = $_SERVER['REQUEST_URI'];
$pays = $_SERVER['GEOIP_COUNTRY_NAME'];
$ville = $_SERVER['GEOIP_CITY'];
$log = $CurrentDate.' - '.$ip.' ('.$pays.'), Ville: ('.$ville.') - '.$url."<br />\n".$contents;
if ($FP = fopen($TextFile, "w")){
  fwrite($FP, $log);
  fclose($FP);
}
?>


Fichier
log_site.html
donne par exemple :

03-07-17 13:18 - XX.XX.XX.XX (France), Ville: () - /<br/>


Mais sur mes alias il ne fonctionne pas. Après je m'en fiche des logs de base dans
/var/log/apache2
.

Bonne journée ^^
0
mamiemando Messages postés 33433 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 décembre 2024 7 809
23 juin 2017 à 08:27
Apparemment si le but est de logguer les redirects, c'est directement faisable dans la configuration apache (et ça me semble un meilleur endroit que ton code php) :
https://serverfault.com/questions/85122/how-do-i-log-apache-requests-that-are-redirected-to-another-virtualhost

Bonne chance
0
nocram18 Messages postés 471 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 16 juillet 2017 25
24 juin 2017 à 14:57
Salut,

Merci de ta réponse, je vais checker et voir mais bon cela m'embête car avec mon site principal cela marche :(

@+
0
nocram18 Messages postés 471 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 16 juillet 2017 25 > nocram18 Messages postés 471 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 16 juillet 2017
25 juin 2017 à 16:19
Bonjour,

Cela ne fonctionne pas :(
0
mamiemando Messages postés 33433 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 décembre 2024 7 809
26 juin 2017 à 09:42
Bonjour,

As tu pensé à relancer apache après avoir modifié ses fichiers de configuration ?

sudo service apache2 restart


Bonne chance
0
nocram18 Messages postés 471 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 16 juillet 2017 25 > mamiemando Messages postés 33433 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 décembre 2024
26 juin 2017 à 17:40
Bonjour,

Oui forcément pour que le vhost soit pris en compte.

Et je ne vois pas du tout, d'ou cela pourrait venir.
0
mamiemando Messages postés 33433 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 décembre 2024 7 809
27 juin 2017 à 09:42
Peux-tu nous reporter la configuration du vhost ?
0
mamiemando Messages postés 33433 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 décembre 2024 7 809
12 juil. 2017 à 09:26
Le fait qu'un chemin absolu ne marche pas me laisse perplexe.

Essaye de voir si utiliser /tmp/toto.html fonctionne, et le cas échéant vérifie ce qui se passe avec
tmpfile
.

Au moment où tu fais tes tests, lance au préalable dans un terminal
tail -f /var/log/apache2/*log
pour voir les éventuelles erreurs de permissions remontées par apache.

D'après la documentation fopen peut ouvrir des urls de type http:// ça pourrait être une dernière solution... mais attention aux droits... et à voir si tu on peut effectivement écrire de cette manière
https://www.php.net/manual/en/function.fopen.php
https://www.php.net/manual/en/wrappers.php

Bonne chance
0
nocram18 Messages postés 471 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 16 juillet 2017 25
14 juil. 2017 à 14:07
Bonjour,

La franchement je ne sais plus où regarder. Mes logs sont bons (j'ai juste une erreur avec GeoIp, sinon rien).
Mes logs de mon site principal fonctionne sans soucis. Mais les alias toujours le même problème :(.

Le problème c'est que je sais que mon fichier log fonctionne donc rien à voir avec fopen ... . je pense que c'est un fichier de conf qui ne vas pas.

Merci, bonne fête nationale :)
0
mamiemando Messages postés 33433 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 décembre 2024 7 809
15 juil. 2017 à 12:45
Pour moi ce qu'il faut clarifier, c'est est ce que log.php est appelé.

Si oui, il devrait être capable d'exécuter fopen pour écrire ses informations dans un fichier. Donc si tu arrives à conclure que ton script php est bien exécuter, il suffit de comprendre pourquoi fopen ne marche pas...

Par exemple, si tu appelles directement log.php (sans passer par l'alias, avec son vrai chemin), est-ce que le fichier est bien écrit ?
0
nocram18 Messages postés 471 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 16 juillet 2017 25
16 juil. 2017 à 11:06
Non au contraire sur mes alias le script ne s’exécute pas, mais par contre sur mon site principal le script fonctionne à merveille et écrit bien dans le fichier .html.

Pour les alias j'ai mis les droits 0777 à www-data alors qu'il ne faut seulement les droits 0600.

Tu peux me conseiller quoi comme script php qui me permet de tester ou est le problème. je ne suis pas assez bon en php. Déjà le log de base j'ai passé pas mal de temps à le faire et le peaufiner.

Merci ++
0