Question

Je voudrais séparer mes dossiers source en deux: Les dossiers qui contiennent le code que vous tapez dans la barre d'adresse et ceux qui représentent des parties de la page (tuiles) et autres codes (cours, etc.). Ainsi, au début de chaque fichier php j'ai ajouté:

<?php
// index.php
include("config.php");
include("session.php");
?>

Config contient tout ce jusqu'à présent, mais me permet de développer si je besoin d'autres répertoires (journaux, etc.)

<?php
// config.php
$_PATHS["base"]      = dirname(dirname(__FILE__)) . "\\";
$_PATHS["includes"]  = $_PATHS["base"] . "includes\\";
ini_set("include_path", "$_PATHS[includes]");
?>

Et session a entre autres, dans le constructeur, un appel à session_start. Elle exige également d'autres classes qui sont comprises ailleurs - ce qui nécessite la configuration étant répertorié avant l'inclusion de la session. Cependant, je reçois l'erreur

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started ...

Si je passe includes autour de cette erreur particulière disparaît mais je dois commencer munging manuellement les liens vers les fichiers d'en-tête. Y at-il de toute façon de fixer les répertoires d'abord et toujours être en mesure d'utiliser des sessions ou doit session_start être la première chose que le fichier comprend?

Était-ce utile?

La solution

Je ne sais pas si vous avez déjà essayé, mais comme un moyen de tester la supprimer config.php inclure et coller le code de configuration là à la place.

Alors ceci:

<?php
// index.php
include("config.php");
include("session.php");
?>

devient ceci:

<?php
// config
$_PATHS["base"]      = dirname(dirname(__FILE__)) . "\\";
$_PATHS["includes"]  = $_PATHS["base"] . "includes\\";
ini_set("include_path", "$_PATHS[includes]");
//index
include("session.php");
?>

Si cela fonctionne alors vous avez un problème avec votre fichier config.php * [voir ci-dessous], si elle ne le fait pas, l'erreur ne pointent toujours à la ligne ini_set? [En supposant de votre commentaire ci-dessus qui est où les points d'erreur actuels]

* Je me souviens avoir lu une fois [il y a un moment je l'avoue] qu'un fichier étant UTF-8 peut bousiller sessions. Essayer de trouver un lien

Ok j'ai trouvé quelqu'un qui a soumis un rapport de bogue concernant UTF-8 et session_start. Apparantly il est pas un bug - je ne l'ai pas vérifié pourquoi - mais de toute façon il est pas tout à fait la même question. Un type de codage UTF-8 ne provoque des erreurs de session, mais pas l'erreur de cookie que vous obtenez. Voir ici si vous êtes intéressé - UTF-8 Erreur

Autres conseils

Le reste de cette erreur est le bit exact qui vous dira où le problème est! Il y a des chances que vous avez des espaces de fin à la fin de config.php.

(Soit ça, ou session.php envoie une sortie avant votre appel à session_start(), mais je suis vraiment juste deviner maintenant:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top