Problème php include chez free.fr et contournement

Eléphanteau du PHP | 20 Messages

11 janv. 2009, 20:33

Bonjour,

Voilà mon problème : j'utilise sur mon blog wordpress hébergé chez Free une fonction "php include" qui me permet de générer un bannière aléatoire en allant "piocher" dans mon album zenphoto (également chez Free). Cela donne les lignes suivantes dans mon header.php :

Code : Tout sélectionner

<div id="header_img"> <?php include("http://pascal.ledisque.free.fr/gallery/?p=heading"); ?> </div>
Cela fonctionne... la plupart du temps ! :-(
En fait depuis quelques semaines, c'est devenu franchement aléatoire, et cela vient forcément de leurs serveurs. Quand cela ne marche pas, et que je regarde le code source de la page, la ligne n'existe simplement pas (pas de message d'erreur ou quoique ce soit) :

Code : Tout sélectionner

<div id="header_img"> </div>
J'ai envoyé un mail à l'assistance de Free. Si j'ai une réponse, je la communiquerai ici.
J'ai également lu beaucoup d'articles à ce sujet : il en ressort que la fonction include est bien supportée par Free. OK, je veux bien. Ce que je peux dire, c'est que ça ne marche pas toujours en ce moment.

Ce que je voudrais faire, c'est contourner le problème : afficher une image définie si la fonction échoue (ou n'est pas exécutée). Un genre de IF j'imagine qui me permettrait d'afficher l'image de mon choix si Free est dans un mauvais jour...
Mais je n'y connais rien en php.

Quelqu'un peut-il m'aider ?
Merci,
pled
Modifié en dernier par pled le 21 janv. 2009, 23:54, modifié 3 fois.

ViPHP
AB
ViPHP | 5818 Messages

11 janv. 2009, 21:50

Quatrième et cinquième exemple de la doc http://fr.php.net/include/

Eléphanteau du PHP | 20 Messages

12 janv. 2009, 20:52

Merci AB,

je vais lire ça de plus prêt, ça correspond à ce que je veux faire. La doc a l'air bien faite.
Et ça me fera pratiquer un peu !

Eléphanteau du PHP | 20 Messages

15 janv. 2009, 20:32

Une petite mise à jour sur le sujet :

Côté support Free, voilà la réponse que j'ai reçu :
*****
Cher utilisateur,
Vous nous signalez qu'un fonction "php include" ne marche pas dans votre blog.
Je suis au regret de vous informer que votre demande est hors support pour l'équipe technique de Free.
Je reste à votre entière disposition pour toute information complémentaire et je vous souhaite une bonne année 2009
*****
Bon comme ça, c'est réglé, rien à attendre de leur côté.

Côté php, voilà ce que j'ai mis en place :

Code : Tout sélectionner

<div id="header_img"> <?php $banniere = include("http://pascal.ledisque.free.fr/gallery/?p=heading"); if ($banniere <> 1) echo"<img src=\"http://pascal.ledisque.free.fr/gallery/banniere.jpg\">"; ?>
Ça devrait marcher... je dis ça devrait parce que en ce moment, la fonction include fonctionne chez Free. J'ai l'impression que c'est quand ils ont des problèmes de charge que cela arrive, mais ce n'est qu'une impression.

Le truc que je pige pas, c'est que quand j'ai fait le test en local sur mon PC, par exemple en dévalidant "allow_url_include" dans mon php.ini, je me prend 2 ou 3 messages d'erreur (Warning include ...), puis "banniere.jpg" s'affiche comme attendu.

Or quand ça m... chez Free, je n'ai aucun message d'erreur. Et il n'y a absolument rien entre le div id="header", comme je l'ai montré plus haut.

J'aimerai bien comprendre comment ils peuvent "retirer" la fonction du code ?
Si quelqu'un peut m'éclairer...

Sinon, merci beaucoup, je n'ai plus qu'à attendre que cela se reproduise, des fois qu'ils retireraient tout le bloc... Je passerai la question en "Résolu" à ce moment là.

ViPHP
ViPHP | 4039 Messages

15 janv. 2009, 20:45

Mais simplement parce qu'on peut paramétrer php pour ne pas afficher les erreurs.. ce qui est souhaitable sur un site de production, pour éviter que des données cruciales ne soient dévoilées au tout venant.

Ca se passe du côté de la fonction error_reporting() .
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphanteau du PHP | 20 Messages

16 janv. 2009, 21:00

Génial ! merci Berzenus.

De error_reporting(), je suis arrivé à display_errors = 0ff dans php.ini ... et j'ai pu reproduire la situation sur mon poste. Et ma bannière par défaut s'affiche comme attendu. Extra.

Reste à attendre le prochain incident sur "le site de prod" !

Mammouth du PHP | 959 Messages

17 janv. 2009, 00:23

Et si, dans dans ton include, t'évites de mettre http:// et mettre tout simplement le chemin relatif ?

Eléphanteau du PHP | 20 Messages

21 janv. 2009, 23:54

Il n'aura pas fallu attendre bien longtemps. Ce soir, Free m'affiche la bannière "par défaut". Tout fonctionne à merveille donc.

Je peux passer le sujet en Résolu.

@chrislabricole : non, j'ai essayé ça au début : je me prenais des messages d'erreur comme si le path n'était pas bon.

Eléphanteau du PHP | 20 Messages

17 févr. 2010, 21:00

Bonjour,

Me revoilà presque un an plus tard... Free semble récemment avoir augmenter la sécurité, et mon appel "php include" ne marche plus. J'ai un beau message d'erreur, qui a au moins le mérite d'être clair :
"Accès interdit - La configuration du contrôle d'accès interdit d'être acceptée à cette heure-ci. Veuillez contacter votre prestataire de
service si vous pensez que ceci n'a pas lieu d'être."

Grâce au test, j'ai toutefois la bannière par défaut qui s'affiche :

<div id="header_img">
<?php $banniere = include("http://pascal.ledisque.free.fr/gallery/?p=heading");
if ($banniere <> 1)
echo"<img src=\"http://pascal.ledisque.free.fr/gallery/banniere.jpg\">";
?>

J'ai essayé d'utiliser un chemin relatif, mais ça ne marche pas. Ni en local sur mon pc d'ailleurs : j'en conclue que je dois absolument utiliser le protocole http pour que l'appel à la fonction zenphoto fonctionne. Ça parait logique, non ? (si quelqu'un peut le confirmer...)

Alors voilà, je suis coincé ? quelqu'un voit-il une solution de contournement ?