8796 sujets

Développement web côté serveur, CMS

Bonsoir,

Voila j'ai modifier une ligne de code comme un idiot, je n'arrive plus à me connecter sur mon site, ce qui est très fâcheux. J'implore votre aide s'il vous plait.Voici la ligne code qui bloque :

if($wp_cache_gzip_encoding)
header('Vary: Accept-Encoding, Cookie');
else
header('Vary: Accept-Encoding, Cookie');
exit();

Je vous remercie d'avance cela fait 3h que je suis dessus en vain.

NB: Voici le message d'erreur complet : Warning: Cannot modify header information - headers already sent by (output started at /home/lechibip/public_html/index.php:2) in /home/lechibip/public_html/wp-content/plugins/wp-super-cache/wp-cache-phase2.php on line 79
Hello, Heluile, Helesardine Smiley smile

Soit tu ne lis décidement pas l'anglais, soit tu n'a pas prêté suffisament d'attention au contenu du message.

Je te re-cite la partie la plus significative en ce qui concerne le cas :

headers already sent by (output started at /home/lechibip/public_html/index.php:2


Décryptage :

Le protocole HTTP, c’est un flux, qui commence par un entête, qui est lui même suivi par des données. L’entête vient toujours avant les données; en conséquence, si l’on veut envoyer des données, on doit écrire l’entête avant, dit encore autrement, toute écriture de donnée provoquera l’envoie préalable de l’entête qui était en attente.

Tu me suis jusque là ?

Eh bien c’est l’explication de ce qu’il se passe ici. Des données ont été écrite (c’est à dire du contenu faisant partie de la page), ce qui a provoqué l’envoie de l’entête, et comme l’entête a été envoyé… trop tard pour y ajouter quelque chose.

Quelque part avant la ligne ou tu veux compléter l’entête, tu as sûrement quelque chose comme une instruction echo ou print.

Soit tu la déplace après la ligne qui continue à modifier l’entête, soit tu déplace la ligne qui continue à modifier l’entête, avant la ou les lignes qui écrivent des données (du contenu).

Si par « malheur », ces explications ne suffisent pas, alors tu peux toujours poster un extrait un peu plus long de ton source, et surtout un extrait qui contient ce qu’il y a avant, depuis le début de ton source PHP (tu peux utiliser la balise code du forum pour cela).


P.S. Tu t’es peut-être trompé de section du forum, ici tu es dans « Web Sémantique » Smiley cligne
Modifié par hibou57 (26 May 2011 - 07:28)
Salut hibou, merci pour ton aide.

J'ai suivi ton raisonnement, sans pour autant réussi quoi que se soit. Par conséquent je t'indique le sébut de mon code PHP jusqu'a la ligne 80.



function wp_cache_phase2() {
	global $wpsc_settings;
	global $cache_filename, $cache_acceptable_files, $wp_cache_gzip_encoding, $super_cache_enabled, $cache_rebuild_files, $wp_cache_last_gc;
	global $cache_max_time, $wp_cache_request_uri, $super_cache_enabled, $wp_cache_object_cache;
	global $cache_enabled, $wp_cache_gmt_offset, $wp_cache_blog_charset;

	if ( $cache_enabled == false )
		return false;

	if ( isset( $GLOBALS[ 'wp_super_cache_debug' ] ) && $GLOBALS[ 'wp_super_cache_debug' ] ) wp_cache_debug( 'In WP Cache Phase 2', 5 );

	$wp_cache_gmt_offset = get_option( 'gmt_offset' ); // caching for later use when wpdb is gone.  http://wordpress.org/support/topic/224349
 
	$wp_cache_blog_charset = get_option( 'blog_charset' );

	wp_cache_mutex_init();
	if(function_exists('add_action') && ( !defined( 'WPLOCKDOWN' ) || ( defined( 'WPLOCKDOWN' ) && constant( 'WPLOCKDOWN' ) == '0' ) ) ) {
		if ( isset( $GLOBALS[ 'wp_super_cache_debug' ] ) && $GLOBALS[ 'wp_super_cache_debug' ] ) wp_cache_debug( 'Setting up WordPress actions', 5 );
		// Post ID is received
		add_action('publish_post', 'wp_cache_post_edit', 0);
		add_action('edit_post', 'wp_cache_post_change', 0); // leaving a comment called edit_post
		add_action('delete_post', 'wp_cache_post_edit', 0);
		add_action('publish_phone', 'wp_cache_post_edit', 0);
		// Coment ID is received
		add_action('trackback_post', 'wp_cache_get_postid_from_comment', 99);
		add_action('pingback_post', 'wp_cache_get_postid_from_comment', 99);
		add_action('comment_post', 'wp_cache_get_postid_from_comment', 99);
		add_action('edit_comment', 'wp_cache_get_postid_from_comment', 99);
		add_action('wp_set_comment_status', 'wp_cache_get_postid_from_comment', 99, 2);
		// No post_id is available
		add_action('switch_theme', 'wp_cache_no_postid', 99); 
		add_action('edit_user_profile_update', 'wp_cache_no_postid', 99); 

		add_action( 'wp_update_nav_menu', 'wp_cache_clear_cache' );

		add_action('wp_cache_gc','wp_cache_gc_cron');

		do_cacheaction( 'add_cacheaction' );
	}

	if ( is_admin() ) {
		if ( isset( $GLOBALS[ 'wp_super_cache_debug' ] ) && $GLOBALS[ 'wp_super_cache_debug' ] ) wp_cache_debug( 'Not caching wp-admin requests.', 5 );
		return false;
	}

	if ( $_SERVER["REQUEST_METHOD"] == 'POST' || !empty( $_POST ) || get_option( 'gzipcompression' ) ) {
		if ( isset( $GLOBALS[ 'wp_super_cache_debug' ] ) && $GLOBALS[ 'wp_super_cache_debug' ] ) wp_cache_debug( 'Not caching POST request.', 5 );
		return false;
	}

	if ( $wp_cache_object_cache && !empty( $_GET ) ) {
		if ( isset( $GLOBALS[ 'wp_super_cache_debug' ] ) && $GLOBALS[ 'wp_super_cache_debug' ] ) wp_cache_debug( 'Not caching GET request while object cache storage enabled.', 5 );
		return false;
	}

	if ( isset( $_GET[ 'preview' ] ) ) {
		if ( isset( $GLOBALS[ 'wp_super_cache_debug' ] ) && $GLOBALS[ 'wp_super_cache_debug' ] ) wp_cache_debug( 'Not caching preview post.', 2 );
		return false;
	}

	if ( !empty( $_GET ) ) {
		if ( isset( $GLOBALS[ 'wp_super_cache_debug' ] ) && $GLOBALS[ 'wp_super_cache_debug' ] ) wp_cache_debug( 'Supercache caching disabled. Only using wp-cache. Non empty GET request.', 5 );
		$super_cache_enabled = false;
	}

	$script = basename($_SERVER['PHP_SELF']);
	if (!in_array($script, $cache_acceptable_files) && wp_cache_is_rejected($wp_cache_request_uri)) {
		if ( isset( $GLOBALS[ 'wp_super_cache_debug' ] ) && $GLOBALS[ 'wp_super_cache_debug' ] ) wp_cache_debug( 'URI rejected. Not Caching', 2 );
		return false;
	}
	if (wp_cache_user_agent_is_rejected()) {
		if ( isset( $GLOBALS[ 'wp_super_cache_debug' ] ) && $GLOBALS[ 'wp_super_cache_debug' ] ) wp_cache_debug( "USER AGENT ({$_SERVER[ 'HTTP_USER_AGENT' ]}) rejected. Not Caching", 4 );
		return;
	}
	if($wp_cache_gzip_encoding)
		header('Vary: Accept-Encoding, Cookie');
	else
		header('Vary: Cookie');
      exit(); [code=php]


NB : Je peux maintenant accéder à la page d'accueil de mon site, mais lorsque je clique sur un article, il y a deux messages d'erreur qui s'affiche:

Le premier est : Warning: Cannot modify header information - headers already sent by (output started at /home/lechibip/public_html/index.php:2) in /home/lechibip/public_html/wp-content/plugins/wp-super-cache/wp-cache-phase2.php on line 79

Le second est : Warning: Cannot modify header information - headers already sent by (output started at /home/lechibip/public_html/index.php:2) in /home/lechibip/public_html/wp-includes/pluggable.php on line 897
Bonjour,

C'est un thème ou plugin WordPress? Si oui, ton code est exécuté à un moment précis (lire la doc pour développeurs de WordPress pour plus d'infos), et il est possible voire probable que WordPress ait déjà généré les en-têtes HTTP et le début du contenu de la réponse.

Donc je commencerais à vérifier dans les docs qui vont bien (voire sur des forums ou blogs qui parlent de WordPress) s'il est possible de modifier les en-têtes HTTP depuis un thème ou un plugin.

PS: je déplace ce sujet qui ne concerne pas HTML.
Modifié par fvsch (26 May 2011 - 13:59)