Mes headers fonctionnent en local mais pas en distant ? Pourquoi ?

Eléphant du PHP | 117 Messages

05 nov. 2008, 12:03

Bonjour à tous, le titre de mon post est assez explicite, mes headers fonctionnent en local mais pas en distant.

Je m'explique, mon header en local va bien s'exécuter et rediriger ma page mais pas en distant, pourquoi ?

Y a t-il un paramètre à régler dans le php.ini ou autre ?

Merci d'avance.

Eléphant du PHP | 353 Messages

05 nov. 2008, 13:07

Tu aurais un peu plus d'information?
Genre le code par exemple?

La machine en local et la machine distante sont quoi ?

Car là...

Merci de préciser :?

Eléphant du PHP | 117 Messages

05 nov. 2008, 13:21

Alors la machine en local : j'utilise windows XP avec wamp server 2.0
En distant c'est linux, c'est tout ce que je sais.

Et mon code, le voici :
if(exist_post('numero') && post('numero')==1 && !panier_vide() && exist_get('page')){
	if(exist_post('accord') && post('accord')==1){
	$_SESSION['numero']=1;
	header("Location: ".racine_site()."fini-panier/"); 
	}else{
	$_SESSION['numero']=0;
	header("Location: ".racine_site()."panier/"); 
	}
}

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 nov. 2008, 13:38

Quel est le résultat ? page blanche ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 422 Messages

05 nov. 2008, 13:59

Peut-être un 'echo racine_site()' permettrait de voir où se trouve le problème ?

Eléphant du PHP | 117 Messages

05 nov. 2008, 14:37

Alors j'ai testé la fonction racine_site() et ça m'affiche bien la racine du site :
http://www.monsite.fr/repertoire/

Ma racine est dans un répertoire.

Et le résultat est une page blanche.

J'ai testé en mettant :
header("Location: http://www.google.fr");
Mais rien à faire j'ai toujours la page blanche, j'ai bien vérifié je n'ai pas de contenu html avant mon header.

Voici pour info les seules lignes avant mon header :
<?php include("haut1.php");?>
et voici le code dans le fichier haut1.php :
<?php session_start();?>
<?php include("connexion.php");?>
<?php include("fonctions.php");?>
J'ai fait un dernier test en supprimer le include("haut1"); et je l'ai remplacé par mes deux includes :
<?php include("template1/connexion.php");?>
<?php include("template1/fonctions.php");?>

Et là ça fonctionne, mais ça ne résout pas mon problème puisque sur tout le site mes headers fonctionnent comme ça, donc pourquoi avec le include, le header ne passe pas et quand je supprimer le include ça fonctionne?

Eléphant du PHP | 353 Messages

05 nov. 2008, 15:24

hum..
Question bete.
Cette histoire de page blanche...

Les erreurs php sont bien visible?

Car si elle ne sont pas visible, tu dois avoir un écho ou autre avant ton header("location:..."); ce qui rend impossible tout reloc vu qu'on ne doit rien envoyer avant d'avoir fait un header.

Cherche de ce coté je pense.

Eléphant du PHP | 117 Messages

05 nov. 2008, 15:50

Oui j'ai regardé, je n'ai abosulement aucun echo ou autre chose qui pourrait géner le header.

Le truc assez bizarre, c'est qu'en local et en distant j'ai le même code, en local ça passe et en distant non.

ViPHP
ViPHP | 5924 Messages

05 nov. 2008, 15:57

Peux tu fournir le code exact (si possible minimal) ?

Eléphant du PHP | 117 Messages

05 nov. 2008, 16:17

alors voici le code de ma page ou il y a le header :
<?php include("haut.php");?>
<?php
if(panier_vide() && !isset($_SESSION['panier'])){
	header("Location: ".racine_site());
}
et voici le code de ma page haut.php
<?php
session_start();
include("connexion.php");
include("fonctions.php");
?>
Je l'ai réduit au minimum et il ne fonctionne toujours pas...

Dans fonctions.php je n'ai que des fonctions, certaines ont des "echo" mais ils sont à l'intérieur des fonctions.

Et dans connexion.php, je n'ai que la connexion à la base de données.

ViPHP
ViPHP | 5924 Messages

05 nov. 2008, 16:23

Enlève le :

Code : Tout sélectionner

?> <?php

Eléphant du PHP | 117 Messages

05 nov. 2008, 16:41

Ca ne change rien, toujours la page blanche.

Mais je me répète au risque d'être soulant mais y a t-il une raison pour que ça fonctionne en local et pas en distant ? (au niveau du php.ini ou autres fichiers de configuration)

Eléphant du PHP | 353 Messages

05 nov. 2008, 17:16

hum...
La seule fois ou j'ai pu avoir le même genre de problème c'est quand le distant n'affichait pas les erreurs mais considérait les warning comme bloquant.

Bref, c'est sans doute une configuration différente.

Le coup de la page blanche me fait clairement penser à des erreurs non affichées.
Tu as regardé de ce coté?

Eléphant du PHP | 117 Messages

05 nov. 2008, 17:19

ba disons que je suis chez un hebergeur donc comment je fais pour afficher les erreurs ?

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

05 nov. 2008, 17:42

As-tu accès au php.ini de ton serveur chez ton hébergeur ?