Mutualisation : premiers résultats

Re-bonjour à tous,
Voilà j'ai commencer mes tests. Résultat :
on peut voir ca là : licronux.no-ip.org
SPIP : 1.9.2b v9406

Config 1: La config idéale
le noyeau est dans
/var /www/admin/mod3
les sites sont dans
/var/www/pays_du_site/mod3
/var/www/autre_pays/mod3
Ca c'est la config à laquelle je dois arriver. c'est pas tout a fais
comme dans la config de spip.net :slight_smile:

La première chose que j'ai faite c'est d'installer un spip dans
/var /www/admin/mod3
dans une bd propre : mutu_admin
OK

Deuxièmement : initialisation de /var/www/pays_du_site/spip_1
Création des dossiers IMG local tmp et config dans
/var/www/pays_du_site/spip_1
j'y ai aussi mis les fichier qui étaient à la racine de la distribution.
Ensuite je met le .htaccess de la distrib principale dans
/var/www/pays_du_site/spip_1
et je lui met ceci :
RewriteEngine On
RewriteBase /admin/mod3/
#Mutualisation
RewriteRule ^(mod3)$ /admin/$1/ [R,L]
RewriteRule ^(mod3)/(.*) /admin/$2 [QSA,L]
et ensuite j'ai configurer un connect.php que j'ai mis dans
/var/www/pays_du_site/mod3/config
Test:
Quand je vais sur http://localhost/pays_du_site/mod3/
il me dis qu'il ne trouve pas écrire :

Warning: main(ecrire/inc_version.php) [function.main]: failed to open
stream: No such file or directory in
/var/www/pays_du_site/mod3/spip.php on line 15

Warning: main() [function.include]: Failed opening
'ecrire/inc_version.php' for inclusion
(include_path='.:/usr/share/php:/usr/share/pear') in
/var/www/pays_du_site/mod3/spip.php on line 15

Warning: main(ecrire/public.php) [function.main]: failed to open
stream: No such file or directory in
/var/www/pays_du_site/mod3/spip.php on line 24

Warning: main() [function.include]: Failed opening 'ecrire/public.php'
for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in
/var/www/pays_du_site/mod3/spip.php on line 24

Pourtant j'ai bien dis dans le rewrite base que je "redirige" vers
/admin/mod3" ...
Comment pourrais-je contourner cela ?

Seb.

--
Denooz Sébastien. Crowfoot pour les intimes...
Jabber : crowfoot@jabber.fr
Web : http://www.licronux.org

Hacking For Freedom
Fellowship of F.S.F.E.
http://www.fsfe.org

Denooz Sébastien a écrit :

Config 1: La config idéale
le noyeau est dans
/var /www/admin/mod3
les sites sont dans
/var/www/pays_du_site/mod3
/var/www/autre_pays/mod3
Ca c'est la config à laquelle je dois arriver. c'est pas tout a fais
comme dans la config de spip.net :slight_smile:

Je viens d'essayer quelque chose d'approchant.
Il y a du positif !

Pour le bon : installation ok + restauration de base + tout ce qui est de l'ordre des textes.

Pour le pas bon : la gestion des images clochait, mais j'ai trouvé une solution.

Voilà ce que j'ai fait :
Mon dossier de départ : /home/~marcimat/public_html/
(pourrait être équivalent à /var/www/)

- Un spip (1.9.3 dev en svn) dans /home/~marcimat/public_html/spip/
- Une mutualisation à faire dans /home/~marcimat/public_html/toto/

Appelés depuis http://nom_serveur/~marcimat/spip/ et http://nom_serveur/~marcimat/toto/

Utilisation du plugin mutualisation, dans le répertoire /spip/mutualisation.

1) J'ai créé le dossier toto (les 4 dossiers config, local, IMG, tmp et aucun fichier)

2) J'ai mis un .htaccess comme ceci dans /toto/ :
RewriteEngine On
RewriteBase /~marcimat/toto/

# Si le fichier ou repertoire demande existe
# ignorer toutes les regles qui suivent
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule "." - [skip=100]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule "." - [skip=100]

# On redirige tout le reste
RewriteRule ^(.*) /~marcimat/spip/$1 [QSA,L]

3) J'ai déclaré dans /spip/config/mes_options.php un répertoire sites en dehors de spip, dans le répertoire parent, (au lieu de 'sites', j'ai mis '..') :

// mutualisation
if (!defined("_ECRIRE_INC_VERSION")) return;
require _DIR_RACINE . 'mutualisation/mutualiser.php';
  
if (
  preg_match(',^/~marcimat/([\.a-zA-Z0-9_-]+)/,', $_SERVER['REQUEST_URI'], $r)
  AND $r[1] != 'spip'
  )
{
    
  $repertoire_sites = '..';
  
  // prefixe des tables
  $GLOBALS['table_prefix'] = 'spip';
  
  // rep plugin
  define('_DIR_PLUGINS', _DIR_RACINE . $repertoire_sites . '/' . $r[1] . '/plugins/');
  
  // params installation
  define ('_INSTALL_HOST_DB', 'localhost');
  define ('_INSTALL_USER_DB', 'marcimat');
  define ('_INSTALL_PASS_DB', '*********');
  define ('_INSTALL_NAME_DB', 'mutu_'.prefixe_mutualisation($r[1]));
  define ('_INSTALL_TABLE_PREFIX', 'spip');
  
  // demarrage mutu
  demarrer_site($r[1],
    array(
      'cookie_prefix' => true,
      'table_prefix' => false,
      'creer_site' => true,
      'creer_base' => true,
      'repertoire' => $repertoire_sites,
      'mail' => 'marcimat*ouvaton.org'
    )
  );
}

4)
Je suis allé dans http://nom_serveur/~marcimat/toto/ et ...
Spip dit "site non configuré" (alors que si le repertoire sites est sites, et que le dossier toto n'existe pas, spip propose directement l'installation. Mais si le dossier toto existe, le plugin mutualisation ne semble pas le proposer)
Bref, je vais dans /toto/ecrire/ ... et installe tout -> OK !

5)
J'ai fait quelques tests (j'ai du modifier le .htaccess) en ajoutant les lignes :
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule "." - [skip=100]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule "." - [skip=100]

Sinon les images n'étaient pas affichées.

Et autre modification : l'ajout d'image ne fonctionne pas car un fichier (inc/getdocument) empêche les chemins avec des '..' ! Le vilain !
Dans la fonction deplacer_fichier_upload :

  // Securite
  ## !! interdit pour le moment d'uploader depuis l'espace prive (UPLOAD_DIRECT)
  if (strstr($dest, "..")) {
    spip_log("stop deplacer_fichier_upload: '$dest'");
    //exit;
  }

J'ai simplement commenté le exit pour le moment; (en ouvrant un trou de sécurité ???)
et j'ai sauvegardé le fichier dans /spip/squelettes/inc/getdocument.php pour pas toucher le petit core !

Voilà, en espérant que ce retour puisse aider aussi...
C'était juste pour tester.

Je n'aime pas du tout l'approche du dossier_site = '..', mais c'est déjà un début !

Je vais peut être explorer avec des noms de domaine aussi voir si on peut se dépatouiller.

MM.