PHP Warning incompréhensible

WRInaute passionné
Salut à tous,

Je constate dans mes log d'erreurs que 2 ou 3 de mes pages ne sont pas crawlés correctement par Google et MSN, ils provoquent un PHP Warning, voici le message que je trouve dans mes logs :

Code:
[Thu Mar 05 16:07:52 2015] [error] [client 66.249.67.13] PHP Warning:  include(ma_page.php): failed to open stream: No such file or directory in /home/www/script_css.php on line 10

[Thu Mar 05 16:07:52 2015] [error] [client 66.249.67.13] PHP Warning:  include(): Failed opening 'ma_page.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /home/www/script_css.php on line 10

Le souci c'est que je n'ai pas d'erreurs qui s'affiche quand j'accède en http à ma_page.php ... cette page s'affiche parfaitement bien et elle existe bien sur mon serveur :(

Dans ce cas là comment trouver ce qui cloche avec ces crawlers ?

Existe-t-il un outil qui puisse permettre de crawler comme Google et voir ce qui ne vas pas ?

Merci pour vos conseils et votre aide.
 
WRInaute impliqué
le message dit que c'est à la ligne 10 de /home/www/script_css.php qu'il y a un problème, soit un fichier inclus qui n'existe pas à l'endroit demandé.
c'est donc script_css.php qu'il faut examiner (voir le source généré) et corriger le php.
 
WRInaute passionné
Merci pour ta réponse mais je ne vois pas de problème à la ligne 10 du fichier script_css.php et lorsque je me connecte en http à ma page ma_page.php le fichier script_css.php ne retourne pas d'erreur PHP, tout fonctionne parfaitement bien :(
 
WRInaute accro
Bonjour,

ma_page.php dans ton script, c'est à partir du répertoire courant à ce moment de l'exécution du script. Ce n'est pas nécessairement le même répertoire que celui auquel tu accèdes avec ma_page.php en HTTP.

Jean-Luc
 
WRInaute passionné
Mes 2 fichiers (page ma_page.php et script_css.php) ne sont pas dans le même répertoire.

Ce que je pige pas c'est que je n'ai aucune erreur PHP lorsque je me connecte à ma_page.php (elle fonctionne et s'affiche parfaitement bien) comment se fait-il que les crawlers retournent un PHP Warning lorsqu'ils crawlent cette page ?
 
WRInaute passionné
poupilou a dit:
Mes 2 fichiers (page ma_page.php et script_css.php) ne sont pas dans le même répertoire.
comment se fait-il que les crawlers retournent un PHP Warning lorsqu'ils crawlent cette page ?
Ce que tu ne comprends pas, c'est qu'ils ne crawlent pas cette page. Ils crawlent script_css.php, et dans cette page, à la ligne 10, il doit y avoir quelquechose comme :
Code:
include ("ma_page.php");
Un include, c'est sur le serveur que ça se passe. L'interpéteur poph va chercher le contenu du fichier include ("ma_page.php)" et le renvoie comme si c'était du contenu de la page "script_css.php". Donc l'appelant ne sait même pas que ma_page.php existe.

L'interpréteur php essaye de charger ma_page.php mais, comme tu le dis toi même, elle n'est pas dans le meme répertoire, et ton interpéteur php ne la trouve pas.... Le message d'erreur, ce n'est pas Google ni MSN qui te l'envoie, c'est ton interpéteur php.
Solution: tu remplaces dans l'include "ma_page.php" par le chemin complet de ma_page.php sur ton serveur.
Ou, plus simple, tu mets ma_page.php dans le même répertoire que script_css.php... :lol:
 
WRInaute passionné
Merci pour vos réponses.

3 remarques :

1) Mon site fait +/- 500 000 pages et tout mon site utilise la même architecture (include de pages php), quand GG crawle mon site il ne trouve pas d'erreurs include PHP pour 499 998 pages sauf pour ces 2 pages, je ne pense donc pas que le problème vienne de la ligne n° 10 dans mon fichier script_css.php sinon l'erreur se produirait sur toutes mes pages.

2) quand j'accède à l'url de ma_page.php qui est en fait http://www.mon-site.com/ma-page.html (avec les url rewrittées) il n'y a aucune erreur PHP et la page s'affiche tout à fait normalement.

3) le fichier script_css.php est le squelette de mon site et à l'intérieur de ce fichier il y a bien un include ("ma_page.php"); qui je le répète ne fait pas d'erreur lorsqu'on accède à l'url de cette page.

J'utilise sur mon site les session PHP et les cookies et ces 2 pages sont accessibles que si certaines conditions sont respectées, on trouve donc ce style de code dans ma_page.php :
Code:
if(isset($_GET['id_membre']) && $_GET['id_membre']==$_COOKIE['id'])
{
// accès à la page
}
else
{
// sinon on renvoie vers la page pour entrer le login et le mot de page
}

Est-ce que les crawlers suivent les session PHP et les cookies lorsqu'il crawl nos sites ?
 
WRInaute impliqué
regarde dans tes logs la vraie url demandée par googlebot à l'heure d'apparation du warning, cela peut-être une url du type mapage.html/untruc
 
WRInaute passionné
J'ai vérifié dans mes logs et c'est bien la bonne url.

Ou vois-tu une faille spout ? Le code que j'indique ci-dessus n'est pas complet, il y a d'autres vérifications qui sont faites dans le if :wink:
 
WRInaute accro
script.php?id_membre=42 + un cookie "id" = 42 mis dans le browser, hop on est dans le 1° cas du "if".
 
WRInaute passionné
Ouais je vois ce que tu veux dire, sauf que l'id_membre a +/- 20 caractères avec des chiffres et des lettres (majuscules et minuscules) et en plus il y a une vérification en base de données qui est faite : là tout d'un coup la faille devient moins "béante" :D
 
WRInaute impliqué
en étant membre du site, a-t-on accès aux id des autres membres ? si oui, alors, la faille est bien présente, vu que l'on peut être logué sous un autre compte valide que le sien.
 
WRInaute passionné
en étant membre du site, a-t-on accès aux id des autres membres ? si oui, alors, la faille est bien présente, vu que l'on peut être logué sous un autre compte valide que le sien.

Non bien sur il y a une vérification qui est faite en base de données.

Pour revenir à mes erreurs PHP d'include avez-vous une idée pour résoudre ce problème ?

N'existe pas un outil qui crawelerait de la même manière que Googlebot et qui me servirait à voir pourquoi ces 2 include de pages déconnent ?
 
WRInaute accro
Tu px essayer de le résoudre en faisant un include avec le chemin absolu au lieu de relatif.
 
WRInaute passionné
Tu as raison spout je vais essayer le chemin absolu et voir ce que cela donne :wink:

Il y a quand même un truc bizarre, c'est que Google référence bien dans les serps ces 2 pages alors qu'il n'arrive pas à les crawler.... je pige plus rien :(
 
WRInaute passionné
poupilou a dit:
Il y a quand même un truc bizarre, c'est que Google référence bien dans les serps ces 2 pages alors qu'il n'arrive pas à les crawler.... je pige plus rien :(

Je te repète que ma_page.php, ce n'est pas google qui n'arrive pas à y accèder, c'est script_css.php qui n'y arrive pas.

Je suppose que tu as une page plus haut dans l'arborescence qui est celle réellement appelée par google.

GG-->la vraie page appelée.php -->include('"script_css.php") --> include("ma_page.php")

Parceque ma_page.php n'est pas dans les répertoire includes connus de php quand il arrive dans le script script_css.php, qui te sont donnés dans le message d'erreur (include_path='.:/usr/share/pear:/usr/share/php')
Mets en une copie de ma_page.php dans un de ces répertoires et ça fonctionnera.
 
Discussions similaires
Haut