Signaler

Apache2 Debian probleme de logs à certains endroits

Posez votre question nocram18 469Messages postés vendredi 26 avril 2013Date d'inscription 16 juillet 2017 Dernière intervention - Dernière réponse le 16 juil. 2017 à 11:06 par nocram18
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 ^^ ++




Utile
+1
plus moins
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
Cette réponse vous a-t-elle aidé ?  
nocram18 469Messages postés vendredi 26 avril 2013Date d'inscription 16 juillet 2017 Dernière intervention - 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.
Répondre
mamiemando 27973Messages postés jeudi 12 mai 2005Date d'inscription ModérateurStatut 10 octobre 2017 Dernière intervention - 27 juin 2017 à 09:42
Peux-tu nous reporter la configuration du vhost ?
Répondre
nocram18 469Messages postés vendredi 26 avril 2013Date d'inscription 16 juillet 2017 Dernière intervention - 28 juin 2017 à 17:45
Salut,

Je l'avais mis en dessous, le voici :


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>


Et mon site principal :

<VirtualHost 192.168.1.1:80>
	ServerAdmin XX@XX.fr
	ServerName XX
	ServerAlias XX.fr
	
	DocumentRoot /var/www/XX
	<Directory var/www/XX/>
		Options FollowSymLinks
		AllowOverride none
	</Directory>
	<Directory /var/www/XX/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride all 
		Order allow,deny
		allow from all
	</Directory>

	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride none
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>

	ErrorLog /var/log/apache2/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride none
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>



Par contre si je copie ce fichier pour le vhost mon apache ne veux plus redémarrer.
Répondre
mamiemando 27973Messages postés jeudi 12 mai 2005Date d'inscription ModérateurStatut 10 octobre 2017 Dernière intervention - 5 juil. 2017 à 09:48
Pardon pour la réponse tardive, j'étais en vacances. Je pense que la raison pour laquelle la "redirection" n'est pas logguée vient du fait que ce n'est pas un
RedirectMatch
mais un
Alias
.

Peut-être que ceci pour t'aider à tracer ce qui se passe :
https://ctors.net/2015/07/24/apache24_debug_rewrite

Bonne chance
Répondre
nocram18 469Messages postés vendredi 26 avril 2013Date d'inscription 16 juillet 2017 Dernière intervention - 5 juil. 2017 à 10:37
Salut,

Pas de problème, il faut en profiter et se déconnecter également.

Ce qui veut dire que les alias ne peuvent pas être loggés. Mais où je ne comprends pas c'est que mon fichier .php ne fonctionne pas. Les logs de Apache dans /var/log/apache2 ne m'intéresse pas.

Donc d'après ton site on ne peut rien log par rapport au site principal.
C'est vraiment bizarre de la part d'Apache, qui est assez bien développé et complet.

Bonne journée.
Répondre
Donnez votre avis
Utile
+0
plus moins
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://wiki.apache.org/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
nocram18 469Messages postés vendredi 26 avril 2013Date d'inscription 16 juillet 2017 Dernière intervention - 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.
Répondre
mamiemando 27973Messages postés jeudi 12 mai 2005Date d'inscription ModérateurStatut 10 octobre 2017 Dernière intervention - 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.
Répondre
nocram18 469Messages postés vendredi 26 avril 2013Date d'inscription 16 juillet 2017 Dernière intervention - 7 juil. 2017 à 11:36
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 ^^
Répondre
mamiemando 27973Messages postés jeudi 12 mai 2005Date d'inscription ModérateurStatut 10 octobre 2017 Dernière intervention - 11 juil. 2017 à 09:37
Ok maintenant c'est beaucoup plus clair pour moi.

Je pense que dans ton cas il faut vérifier deux choses pour comprendre pourquoi il ne se passe rien dans le cas des alias :
1) est-ce que le script
log.php
est bien exécuté ? Par exemple en faisant quelques
echo
on pourrait s'en assurer
2) est-ce que le chemin utilisé par
fopen
est correct. On pourrait tester dans un premier temps avec un chemin absolu et si le fopen échoue, mettre un message d'erreur pour comprendre ce qui se passe.

$TextFile = "/tmp/toto.html"
if ($FP = fopen($TextFile, "w")) {
  echo "Writting ".$TextFile."<br/>";
  fwrite($FP, $log);
  fclose($FP);
} else {
  echo "Cannot write ".$TextFile."<br/>";
}
Répondre
nocram18 469Messages postés vendredi 26 avril 2013Date d'inscription 16 juillet 2017 Dernière intervention - 11 juil. 2017 à 17:05
Cela ne fonctionne pas.

Même en mettant un chemin absolu type /var/www/ForwardingPage/echo.php qui écrit dans toto.html .
Les droits sont bons ... Je ne sais plus où donner de la tête.

A savoir que les logs que je t'ai donné au dessus fonctionnent. C'est un copié collé de certains qui fonctionnent déjà.
C'est vraiment juste dans les alias apache que cela ne fonctionne pas.
Répondre
Donnez votre avis
Utile
+0
plus moins
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
http://php.net/manual/en/function.fopen.php
http://php.net/manual/en/wrappers.php

Bonne chance
nocram18 469Messages postés vendredi 26 avril 2013Date d'inscription 16 juillet 2017 Dernière intervention - 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 :)
Répondre
mamiemando 27973Messages postés jeudi 12 mai 2005Date d'inscription ModérateurStatut 10 octobre 2017 Dernière intervention - 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 ?
Répondre
nocram18 469Messages postés vendredi 26 avril 2013Date d'inscription 16 juillet 2017 Dernière intervention - 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 ++
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !