Je souhaiterai savoir s'il est déjà possible de tester la possibilité de mutualiser le noyau de Spip ou du moins, certains fichiers.
En effet, je souhaite faire co-habiter 25 sites sous Spip, et la solution de la contrib Spip-Clone (qui m'a bien dépanné) commence a ne plus être très adaptée.
Ces sites sont momentanéement plus en service, et j'attend la sortie officiel de Spip 1.9 pour l'ouverture officiel de ces mini-sites sous Spip.
Les caractèristiques : utilisation d'une même base de donnée en changeant simplement le préfix utilisé.
Merci et a bientôt pour vous remettre le rapport de mes tests.
Joe ACHIM
Dans inc_version, les constante _DIR_INCLUDE, _DIR_LANG _DIR_IMG_ICONES, _DIR_IMG_ICONES_BARRE et _DIR_IMG_PACK indiquent les répertoires où se trouvent des fichiers partageables. Tu peux installer
plusieurs Spip, changer leur inc_version pour que tous ces constantes aient la meme valeur et effacer
le contenu des originaux (sauf évidemment, inc_version index.php et inc_connect.php3; il y aussi inc_magicquotes.php au moins pour le moment). Ce n'est pas encore testé, mais ça devrait commencer à ressembler à ce qu'il faut.
Fatal error: Call to undefined function: lire_fichier() in /home/www/43f5f815345ceec525000104d1bfed0a/users/blogs/web/n-p_test_mutualis/ecrire/inc_version.php on line 386
Sorry, je ne me souviens plus de la révision
P.S. : je n'ai supprimé aucun fichier dans aucun de mes 2 spips, je vous disait que c'était du "vite fait"
Fonction opérationelle... Vous pourez remarquer que les 2 urls précédentes ammènement sur le même site, l'une avec un design, et l'autre avec les squelettes par défaults.
Toutefois, sur la version mutualisée, les fichiers langues ne sont pas chargées
Fonction opérationelle... Vous pourez remarquer que les 2 urls précédentes ammènement sur le même site, l'une avec un design, et l'autre avec les squelettes par défaults.
Toutefois, sur la version mutualisée, les fichiers langues ne sont pas chargée
Dans inc_version, les constante _DIR_INCLUDE, _DIR_LANG
_DIR_IMG_ICONES, _DIR_IMG_ICONES_BARRE et _DIR_IMG_PACK indiquent les
répertoires où se trouvent des fichiers partageables. Tu peux installer
plusieurs Spip, changer leur inc_version pour que tous ces constantes
aient la meme valeur et effacer
le contenu des originaux (sauf évidemment, inc_version index.php et
inc_connect.php3; il y aussi inc_magicquotes.php au moins pour le
moment).
Ma réflexion était principalement dans le sens où, par défault, la définition des variables _DIR_INCLUDE, _DIR_LANG, _DIR_IMG_ICONES, _DIR_IMG_ICONES_BARRE et _DIR_IMG_PACK sont définies en fonction de _DIR_RESTREINT.
Sachant que j'ai redefini _DIR_RESTREINT vers le dossier écrire qui contient l'ensemble des fichiers a partager, il me semblait évident que toutes ces définitions sont corrigées en conséquence. Où je n'ai pas compris la définition de ces données ?
Le pb c'est que _DIR_RESTREINT sert aussi à savoir si le script en cours d'exécution est déclenché de l'espace public ou de l'espace privé. Ce n'est pas terrible, mais c'est historique (l'informatique c'est comme l'orthographe: au début c'était logique et le temps venant ça ne l'est plus). Si ca te dit de réperer tous les endroits où _DIR_RESTREINT est employé pour cette raison et voir si on peut faire autrement je suis preneur, car on peut très bien rever d'une architecture où l'espace de redac serait une partition voir une machine différente de l'espace public.
Autre point, les icones publiques ne sont pas dans ecrire/ donc on est bien obligés de définir leur répertoire sans référence à celui-ci.
Alors tant qu'à faire, autant définir tous ces répertoires sans référence à ecrire/.
J'ai peut-être trouvé une solution de dépannage, maisqui semble opérationelle surmon site de test. sans modifier l'url de mes fichiers lang, ni de mes images, etc...
J'ai en effet, mis en place une 7ème constante dans inc_version (au lieu des 6 existantes), et modifié en conséquence la constante _DIR_RESTREINT.
// 7 constantes incontournables et prioritaires
define('_EXTENSION_PHP', '.php3');
define('_DIR_RESTREINT_ABS', 'ecrire/');
define('_DIR_CORE', '../spip_19a2/'); //ici le dossier contenant le Spip complet non-mutualiés servant de base centrale
define('_DIR_RESTREINT', (!@is_dir(_DIR_RESTREINT_ABS) ? "../" . _DIR_CORE . _DIR_RESTREINT_ABS : _DIR_CORE . _DIR_RESTREINT_ABS));
define('_DIR_RACINE', _DIR_RESTREINT ? '' : '../');
define('_FILE_OPTIONS', _DIR_RESTREINT . 'mes_options' . _EXTENSION_PHP);
define('_FILE_CONNECT_INS', (_DIR_RESTREINT . "inc_connect"));
define('_FILE_CONNECT',
(@is_readable(_FILE_CONNECT_INS . _EXTENSION_PHP) ?
(_FILE_CONNECT_INS . _EXTENSION_PHP)
: false));
Ce n'est peut-être pas parfait, mais ca fonctionne, alors pourquoi pas étudier en cette direction, en laissant la compatibilitée en cas de non-mutualisation de Spip... caeci éviterai de scanner tout le code pour redéfinir les variable, au risque d'en oublier
J'ai en effet, mis en place une 7ème constante dans inc_version (au lieu des 6 existantes), et modifié en conséquence la constante _DIR_RESTREINT
...
Ce n'est peut-être pas parfait, mais ca fonctionne, alors pourquoi pas étudier en cette direction, en laissant la compatibilitée en cas de non-mutualisation de Spip... caeci éviterai de scanner tout le code pour redéfinir les variable, au risque d'en oublier
L'intéret d'examiner tout le code serait de ne plus imposer que l'espace de redac soit sous l'espace public.
Mais si ça ne dérange pas, ta solution convient très bien.
L'étape suivante c'est de modifier le script d'installation pour qu'il propose d'installer plusieurs Spip avec les memes sources, en copiant le inc_version d'origine après modif comment tu le proposes. Si le cœur t'en dit...
Je souhaite suggérer d'aller plus loin dans cette subtilitée de mutualiser ou non, en testant "utiliser le fichier existe dans le spip courant, sinon prendre le spip central". Toutefois, je ne saurait pas coder cette condition de manière simple dans les constantes.
Biensûr, je parle des fichiers/repertoires principaux défini dans inc_version, ce qui permettera par exemple :
- d'éviter a modifier tous les inc_connect en cas de déménagement de la base de donnée générale vers un nouveau serveur sql (ou modification mot de passe) [utilisation du fichier dans spip cental],
- personaliser les langues dans certains spip [utilisation fichier spip
Je vais tout de même pencher afin de "sortir" le dossier 'ecrire' du moule, voire éventuellement de pouvoir le renommer (comme déjà demandé pour plus de sécurité).
Je donnerai plus d'infomation si une autre idée me viens courant la semaine, et reste ouvert à toutes autres suggestions...
à bientôt,
Je pense avoir trouvé le moyen de tester si le spip est ou non mutualisé (verification si un dossier commun définit existe)
Par la même occasion, j'ai redefini le test racine. Mes essais locaux ont été concluants (public/ecrire sur core ; public/ecrire sur mutualisé)
Fichier adapté ci-joint (je sais pas en faire un diff)