Problème d'include en php 5 (marche en php 4)

Problème d'include en php 5 (marche en php 4) - PHP - Programmation

Marsh Posté le 28-12-2006 à 13:52:53    

Bonjour, j'utilise un système de pseudo-frame dans mon site de cette manière :

Code :
  1. <?
  2.   if (isset($_REQUEST['page'])) {
  3.    include($_REQUEST['page'].'.php');   // Nous appelons le contenu central de la page
  4.   }
  5. ;
  6. ?>


 
par ailleurs j'appelle cette page avec

Code :
  1. admin.php?page=doc_admin&sort=nom_doc


 
En php 4 ça marche parfaitement (sur mon PC en local avec Easy PHP), mais dès que j'uploade sur le serveur la page appelée par $_REQUEST['page'] ne se charge pas ; le script s'arrête sans message d'erreur (j'ai pourtant positionné error_reporting à E_ALL.
 
Je coince là, avez-vous une idée ? j'ai changé $_REQUEST par $_GET mais ça ne résout rien...

Reply

Marsh Posté le 28-12-2006 à 13:52:53   

Reply

Marsh Posté le 28-12-2006 à 13:57:54    

echo $_GET['page']; pour voir ce que contient cette variable.
Ca te permettra de savoir si le probleme se situe au niveau de la récupération des valeurs passées en argument ou si c'est un probleme d'include (chemin etc ...)

Reply

Marsh Posté le 28-12-2006 à 14:29:51    

Ben justement si j'écris
 
if (isset($_REQUEST['page'])) {
   echo($_REQUEST['page'].'.php');   // Nous appelons le contenu central de la page
  }
;
 
ça m'affiche bien 'doc_admin.php'
 
donc ce n'est pas un problème de récupération des valeurs...

Reply

Marsh Posté le 28-12-2006 à 14:46:54    

Et tu as bien sûr un fichier au nom correspondant à ton include ? Vérifie le include_path si php doit s'en servir pour trouver le fichier :)

Reply

Marsh Posté le 28-12-2006 à 14:57:35    

Oui j'ai bien ce fichier...
 
et dans le include_path j'ai '.:/usr/share/pear'
a priori c'est normal !

Reply

Marsh Posté le 28-12-2006 à 15:12:38    

Commence par remplacer include par require. Normalement t'aurais un warning avec include si t'as bien mis l'error_reporting à E_ALL, mais on ne sait jamais.

Reply

Marsh Posté le 28-12-2006 à 15:16:57    

Le contenu du fichier inclu est-il présent dans la source du document HTML généré ?
Il peut etre présent dans la source mais ne pas apparaitre dans le navigateur a cause de style particulier ou pour plein d'autre raisons.

Reply

Marsh Posté le 28-12-2006 à 15:48:17    

Non le script s'arrête avant l'include...
et aucun message d'erreur, car mon hébergeur a mis display_errors à off !!!

Reply

Marsh Posté le 28-12-2006 à 15:59:33    

[:pingouino]  
 
Tu peux tenter de l'activer avec ini_set, mais a priori ça t'empêchera toujours de voir les erreurs fatales... mais en laissant include() peut-être...

Reply

Marsh Posté le 28-12-2006 à 16:02:39    

oui j'ai essayé ini_set('error_reporting', E_ALL) mais ça ne marche pas :(

Reply

Marsh Posté le 28-12-2006 à 16:02:39   

Reply

Marsh Posté le 28-12-2006 à 16:03:56    

Je parle du display_errors.
 
ini_set('display_errors', '1')


Message édité par sielfried le 28-12-2006 à 16:04:27
Reply

Marsh Posté le 28-12-2006 à 16:25:27    

OK je viens de faire activer le DISPLAY_ERROR après un coup de fil à l'hébergeur, et en fait c'était une ligne <? echo ?> qui traînait dans le script appelé par l'include !!! bizarre cela n'a pas été signalé par l'interpréteur en php 4 !!
 
Merci à tous quand-même :)

Reply

Marsh Posté le 30-12-2006 à 12:06:16    

Peut être parce qu'ils ont enfin un php.ini correcte qui n'accepte pas les shorts_tags ;)

Reply

Marsh Posté le 30-12-2006 à 12:49:50    

Tu feras gaffe toutefois, car ton script presente une faille. Il ne faut jamais faire des includes contenant des variables modifiables par quiconque ($_GET,$_REQUEST, etc..); ou alors blinder le truc avec une solide regexp.
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed