Version complète: sur le forum Webmaster Hub : Etre informé des erreurs 404
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > (X)HTML et CSS
Nullette
Bonjour à vous tous,
je poste ici, ne sachant pas si le forum .htaccess ou php conviendrait mieux.
Je vous soumets un problème qui n'a pa pu être réglé sur le forum de mon hébergeur.
J'ai changé récemment de formule d'hébergement, toujours sur le même hébergeur et je ne reçois plus les fichiers texte me renseignant sur les erreurs 404.
Le fichier .htaccess est :
ErrorDocument 404 /log404.php
Le fichier log404.php :
CODE
<?php
header('HTTP/1.1 404 Page introuvable');
$charset = 'utf-8';
$ERR_URL = $HTTP_SERVER_VARS['REDIRECT_URL'];
if (isset($HTTP_SERVER_VARS['REDIRECT_QUERY_STRING'])) {
$ERR_URL .= '?' . $HTTP_SERVER_VARS['REDIRECT_QUERY_STRING'];
}
if ($f = _AT_fopen($HTTP_SERVER_VARS['HTTP_RACINE'] . '/logs/404.txt', 'a')) {
fputs($f, date('d/m/Y H:i:s') . ' ' .
$HTTP_SERVER_VARS['REMOTE_ADDR'] . ': ' .
$HTTP_SERVER_VARS['REDIRECT_REQUEST_METHOD'] . ' ' .
$ERR_URL . ' (' .
$HTTP_SERVER_VARS['REDIRECT_ERROR_NOTES'] . ') Ref: ' .
$HTTP_SERVER_VARS['HTTP_REFERER'] . "\n");
fclose($f);
}
?>
<html>
<head>
<title>Erreur 404</title>
etc
<h1>Erreur 404 : page introuvable / Error 404 / </h1>
<p>Le serveur <?php echo $HTTP_SERVER_VARS['SERVER_SOFTWARE'] ?> a indiqué
ceci:
<?php echo $HTTP_SERVER_VARS['REDIRECT_ERROR_NOTES'] ?>
</p>
<hr>
<p>La page que vous cherchez n'existe pas ou n'existe plus ou a été déplacée.Vous pouvez...
</p>
<ul>
<?php if ($HTTP_SERVER_VARS['HTTP_REFERER']) { ?>
<li><a href="<?php echo $HTTP_SERVER_VARS['HTTP_REFERER'] ?>">retourner à la page d'où vous venez</a> ;</li>
<?php } ?>
<li>bla bla</li>
</ul>
</body>
</html>


Le répertoire "logs" dans le lequel les fichiers texte devraient apparaître en cas d'erreurs reste vide.

Je précise que la page d'erreur s'affiche correctement.
J'ai essayé plusieurs types de chmod, sans résultat.
Si vous avez une idée ....
Dan
Tu utilises @fopen ce qui fait que les erreurs éventuelles ne s'affichent pas.
Supprime le @ et dis-nous l'erreur que cela affiche.

Vérifie aussi que l'utilisateur qui tourne Php a bien les permissions d'écrire dans le fichier $HTTP_SERVER_VARS['HTTP_RACINE']."/logs/404.txt" que tu pourrais aussi nommer $_SERVER['DOCUMENT_ROOT']."/logs/404.txt" ... vu que je ne suis pas certain que HTTP_RACINE soit standard comme nom de variable (cela semble être une particularité de NFrance).

Remplace donc:
CODE
if ($f = @fopen($HTTP_SERVER_VARS['HTTP_RACINE'] . '/logs/404.txt', 'a')) {

par
CODE
if ($f = fopen($_SERVER['DOCUMENT_ROOT'] . '/logs/404.txt', 'a')) {
Nullette
Merci Dan,
j'ai modifié le fichier php comme tu m'as indiqué.
Aucun changement n'est intervenu (ni aucune erreur smile.gif).
Je suis un peu perdue dans les chmod.
Le répertoire logs et le fichier php sont en 755
.htaccess est 644
Dan
On va déjà s'assurer que le $_SERVER['DOCUMENT_ROOT'] est correctement positionné.

Crée un fichier Php avec ceci:
CODE
<?php
echo $_SERVER['DOCUMENT_ROOT'] . '/logs/404.txt';
?>

appelle-le par ton navigateur et vérifie que le chemin qui s'affiche est bien celui de ton fichier 404.txt

Ensuite, assure-toi que le mode de ce fichier est 666, donnant les permissions d'écriture au monde entier.
Nullette
J'ai testé comme tu m'as dit :
/home/wb59301/logs/404.txt
ça paraît bon (?) (je n'ai pas de fichier wb59301.). Résultat obtenu en appelant une page inexistante.
J'ai uploadé le fichier d'origine, chmod 666 ... toujours pas de fichier text.

J'ai fait un autre test en tapant dans le navigateur mon site /logs/404.txt
La réponse obtenue est
"You don't have permission to access /logs/404.txt on this server."

Par contre, je ne sais pas si les fichiers texte apparaîssent de suite, peut-être y a-t-il un décalage dans le temps ?
Dan
Quel est ton hébergeur ?
Tu devais être sur Nfrance précédemment, non ?

Normalement le répertoire wb59301 est ton répertoire utilisateur.
Qu'as-tu à la racine de ce répertoire ? Un répertoire www ? un répertoire htdocs ? Autre chose ?
As-tu le répertoire logs à cet endroit ? Et dans l'affirmative, quelles sont les permissions de celui-ci ?
Nullette
Mon hébergeur est NFrance, le même qu'avant. J'ai simplement changé de formule (et donc de serveur).
L'arborescence de mon site n'a pas changé :
index.html est à la racine, ainsi que le répertoire "logs" et les fichiers .htaccess et log404.php

Je n'ai pas de répertoire www, ni htdocs ni autre (du moins sur mon ftp).

Le répertoire log est en chmod 755.
Leonick
CITATION(Nullette @ jeudi 2 août 2007 à 15:59) *
Le répertoire log est en chmod 755.
il faudrait le passer en 777
petit-ourson
CITATION(Leonick @ samedi 4 août 2007 à 14:25) *
il faudrait le passer en 777

C'est du propre tongue.gif
Leonick
CITATION(petit-ourson @ samedi 4 août 2007 à 20:36) *
C'est du propre tongue.gif
en fait, sur un serveur web, apache est réglé pour n'avoir que les droits nobody et pas root (heureusement), il faut donc lui donner des droits sur certains répertoires temporaires pour qu'il puisse écrire.
Mais que sur ceux là
ALeX!S
"logs" ne serait pas un alias par défaut d'apache pour ses propres fichiers logs ? du coup ton script PHP n'y aurais pas accès, ce qui me semble logique.

Je dis ça car j'ai déjà eu le cas en essayant d'utiliser "icons" qui pointe vers les images utilisée par apache.

As-tu essayer avec un autre nom de répertoire (avec les bonnes permissions bien sur).
Nullette
Me revoici !
Dans le répertoire logs sur le serveur se trouve maintenant un fichier text, mais j'y trouve principalement des lignes comme celle-ci :
CITATION
23/08/2007 09:00:16 83.228.3.130: /log404.php () Ref:
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.