[spip-dev] Petit retour sur la mutualisation en prod et les prefixe de cookies

Bonjour,

Je viens de passer 2 sites en mutualisation (ils sont tout les 2 sur le même domaine, avec des sous domaines différents).
Ils étaient auparavant tous les 2 sur la même base de données avec un prefix de cookie spécifique.
J'ai essayé de mettre dans le config/connect.php le
$GLOBALS['cookie_prefix'] = 'monprefixe';
Mais ce n'est pas tout le temps pris en compte.
En particulier, ça n'est pas pris en compte au login :frowning:

Pour l'instant, j'ai fait dans le mes_options.php du spip mutualisé :
<?php
require _DIR_RACINE.'mutualisation/mutualiser.php';
define ('_INSTALL_HOST_DB', '127.0.0.1');
$quota_cache = 50;

$site = str_replace('www.', '', $_SERVER['HTTP_HOST']);
if ($site == 'monpremiersite.tld') {
  $GLOBALS['table_prefix'] = 'monprefixe1';
  $GLOBALS['cookie_prefix'] = 'monprefixe1';
}
if ($site == 'mon2esite.tld') {
  $GLOBALS['table_prefix'] = 'monprefixe2';
  $GLOBALS['cookie_prefix'] = 'monprefixe2';
}

demarrer_site($site, array(
    'creer_site' => true,
    'cookie_prefix' => false,
    'table_prefix' => false,
    'mail' => 'mutualisation@domaine.net'
    )
  );
?>

Mais en écrivant ceci, je me dit que la bonne méthode serait de vérifier si dans le dossier sites/$sites/config/ il n'y aurait pas un mes_options.php et le charger le cas échéant.

RealET a écrit :

Bonjour,

Je viens de passer 2 sites en mutualisation (ils sont tout les 2 sur le même domaine, avec des sous domaines différents).

J'ai essayé de mettre dans le config/connect.php le
$GLOBALS['cookie_prefix'] = 'monprefixe';

Mais ce n'est pas tout le temps pris en compte.
En particulier, ça n'est pas pris en compte au login :frowning:

Ah oui,je confirme !

Mais en écrivant ceci, je me dit que la bonne méthode serait de vérifier si dans le dossier sites/$sites/config/ il n'y aurait pas un mes_options.php et le charger le cas échéant.

C'est étrange, c'est ce que font les dernières lignes de la fonction demarrer_site()...

En fait, il semble que la fonction spip_initialisation() appelée juste avant le mes_fonctions.php du site dans la fonction demarrer_site() récupère des cookie avec la valeur du moment (pas encore celui de mes_options du site.

  // appliquer le cookie_prefix
  if ($GLOBALS['cookie_prefix'] != 'spip') {
    include_spip('inc/cookie');
    recuperer_cookies_spip($GLOBALS['cookie_prefix']);
  }

En mettant dans mutualiser.php l'appel de mes_options avant spip_initialisation, la connexion fonctionne.

Est-ce que ça pose un problème de mettre cet include avant spip_initialisation ?

  if (is_readable($f = $e._NOM_PERMANENTS_INACCESSIBLES._NOM_CONFIG.'.php'))
    include($f); // attention cet include n'est pas en globals
    
  spip_initialisation(
    ($e . _NOM_PERMANENTS_INACCESSIBLES),
    ($e . _NOM_PERMANENTS_ACCESSIBLES),
    ($e . _NOM_TEMPORAIRES_INACCESSIBLES),
    ($e . _NOM_TEMPORAIRES_ACCESSIBLES)
  );

MM.

En mettant dans mutualiser.php l'appel de mes_options avant
spip_initialisation, la connexion fonctionne.

Est-ce que ça pose un problème de mettre cet include avant
spip_initialisation ?

Il me semble que non ; essayons :slight_smile:

-- Fil

Puisqu'on charge sans problème le mes_options commun à tous les sites, il n'y a en effet pas de raison que le chargement de celui-ci pose problème.
Mais intuitivement ça ne me parait la bonne solution: c'est à celui général de régler tout ce qui concerne la mutualisation. Mais pour l'instant je n'ai pas de solution alternative.

Committo,Ergo:Sum

Mais intuitivement ça ne me parait la bonne solution: c'est à celui
général de régler tout ce qui concerne la mutualisation. Mais pour
l'instant je n'ai pas de solution alternative.

C'est bien le cas : le code de mutualisation sai mettre un
cookie_prefix tout seul ; mais du coup, après avoir expérimenté des
trucs, RealET faisait un commentaire sur le fait que le mes_options de
sites/xxx/config/ était chargé trop tard. Ce qui était vrai aussi.

-- Fil