Nullette Posté 2 Août 2007 Posté 2 Août 2007 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 : <?phpheader('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 Posté 2 Août 2007 Posté 2 Août 2007 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: if ($f = @fopen($HTTP_SERVER_VARS['HTTP_RACINE'] . '/logs/404.txt', 'a')) { par if ($f = fopen($_SERVER['DOCUMENT_ROOT'] . '/logs/404.txt', 'a')) {
Nullette Posté 2 Août 2007 Auteur Posté 2 Août 2007 Merci Dan, j'ai modifié le fichier php comme tu m'as indiqué. Aucun changement n'est intervenu (ni aucune erreur ). Je suis un peu perdue dans les chmod. Le répertoire logs et le fichier php sont en 755 .htaccess est 644
Dan Posté 2 Août 2007 Posté 2 Août 2007 On va déjà s'assurer que le $_SERVER['DOCUMENT_ROOT'] est correctement positionné. Crée un fichier Php avec ceci: <?phpecho $_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 Posté 2 Août 2007 Auteur Posté 2 Août 2007 (modifié) 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 ? Modifié 2 Août 2007 par Nullette
Dan Posté 2 Août 2007 Posté 2 Août 2007 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 Posté 2 Août 2007 Auteur Posté 2 Août 2007 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 Posté 4 Août 2007 Posté 4 Août 2007 Le répertoire log est en chmod 755.il faudrait le passer en 777
Leonick Posté 4 Août 2007 Posté 4 Août 2007 C'est du propre 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 Posté 21 Août 2007 Posté 21 Août 2007 "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 Posté 23 Août 2007 Auteur Posté 23 Août 2007 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 : 23/08/2007 09:00:16 83.228.3.130: /log404.php () Ref:
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant