Valider 5b1b73ff rédigé par esj's avatar esj
Parcourir les fichiers

Fusion des fonctions spip_initialisation et spip_intialisation_parametree.

Suite à quelques essais (pas toujours réussis il est vrai) et échanges divers, l'installation de Spip, notamment en mutualisé, repose à présent sur les symboles suivants:

- plusieurs constantes _DIR_* au début de inc_version définissent les répertoires où se trouvent les sources, considérées comme inaccessibles en écriture car partageable par plusieurs sites.

- ensuite, plusieurs constantes _NOM_* définissent le nom (relatif) des fichiers et répertoires propres et indispensables à chaque site utilisant Spip, savoir 

	define('_NOM_CONFIG', 'mes_options');	
	define('_NOM_TEMPORAIRES_INACCESSIBLES', "tmp/"); 
	define('_NOM_TEMPORAIRES_ACCESSIBLES', "var/");
	define('_NOM_PERMANENTS_INACCESSIBLES', "etc/");
	define('_NOM_PERMANENTS_ACCESSIBLES', "IMG/");

	var/ comportant les images réduites créé dynamiquement
	tmp/ jouant le role d'ecrire/data  et comportant egalement CACHE/
	etc/ jouant le role de ecrire/ en tant que repertoire accessible en écriture.

- inc_version ne définit plus de fontions, mais charge immédiatement inc/utils qui à l'inverse ne fait que définir des fonctions.

- inc_version charge ensuite le fichier ecrire/mes_options.php (pour compatibilité) ou etc/mes_options (préférable aujourd'hui);

- enfin, il appelle la fonction d'initialisation ainsi:

	@spip_initialisation(
	       (_DIR_RACINE  . _NOM_PERMANENTS_INACCESSIBLES),
	       (_DIR_RACINE  . _NOM_PERMANENTS_ACCESSIBLES),
	       (_DIR_RACINE  . _NOM_TEMPORAIRES_INACCESSIBLES),
	       (_DIR_RACINE  . _NOM_TEMPORAIRES_ACCESSIBLES)
	       );

ce qui va définir les 4 répertoires accessibles en écriture à la racine du site, et initialiser toutes les autres constantes (notamment _SPIP_CHMOD).

- toutefois l'inclusion de mes_options peut neutraliser cet appel soit partiellement (en définissant quelques unes des constantes normalement définies par spip_initialisation qui ne pourra plus agir dessus) soit totalement (en appelant lui-meme spip_initialisation avec d'autres arguments que ceux ci-dessus).

Une application typique est de mettre dans ecrire/mes_options.php (ou etc/mes_otpions.php) les lignes suivantes:

define('_SPIP_CHMOD', 0770);

if ( preg_match(',/([a-zA-Z0-9_-]*)[/?],',$_SERVER['REQUEST_URI'],$r)) {
	if (is_dir($e = _DIR_RACINE . 'Ajouts/' . $r[1]. '/')) {
		$cookie_prefix = $table_prefix = $r[1];
		define('_SPIP_PATH', 
			_DIR_RACINE . 'Ajouts/' . $table_prefix  . '/:' .
			_DIR_RACINE.':'.
			_DIR_RACINE .'dist/:' .
			_DIR_RESTREINT);

		spip_initialisation(
		       ($e . _NOM_PERMANENTS_INACCESSIBLES),
		       ($e . _NOM_PERMANENTS_ACCESSIBLES),
		       ($e . _NOM_TEMPORAIRES_INACCESSIBLES),
		       ($e . _NOM_TEMPORAIRES_ACCESSIBLES)
		       );

		if (is_readable($e .=  _NOM_CONFIG . '.php')) include($e);
	}
 }

La première ligne réduit l'accès aux répertoires et fichiers créés par le serveur http à ce seul serveur. 

A partir de l'URL du script appelé, les lignes suivantes déduisent un nom qui doit etre le nom d'un sous-répertoire Ajouts dans l'installation de Spip. L'exécution de ce script commence donc par déclarer les 4 sous-répertoires spécifiques au site, ainsi que le préfixe de ses table SQL. Au cas où existerait un fichier etc/mes_options pour ce site spécifique, celui est également chargé.

L'utilisation des constantes _NOM_* permet donc de disposer d'un ensemble de répertoires et fichiers qui n'ont meme pas à savoir s'ils utilisent une installation mutualisée ou non de Spip.

ATTENTION: il faut bien voir que les fonctions de inc/utils ne seront vraiment utilisables qu'après appel de spip_initialisation, car les constantes qu'elles utilisent (_DIR_TMP, _DIR_IMG etc) ne sont pas encore définies à l'entrée de mes_options (c'est justement ce qui permet de les personnaliser).
parent 138bf217
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter