diff --git a/ecrire/inc/flock.php b/ecrire/inc/flock.php
index 7a5f59940994e6670c880d477beb49f55cbb4457..274f17c998ebf64781260f2b723425a1459dd69e 100644
--- a/ecrire/inc/flock.php
+++ b/ecrire/inc/flock.php
@@ -180,6 +180,33 @@ function ecrire_fichier ($fichier, $contenu, $ecrire_quand_meme = false, $trunca
 	return false;
 }
 
+/**
+ * Ecrire un contenu dans un fichier encapsule en php pour en empecher l'acces en l'absence
+ * de htaccess
+ * @param string $fichier
+ * @param <type> $contenu
+ * @param <type> $ecrire_quand_meme
+ * @param <type> $truncate 
+ */
+function ecrire_fichier_securise ($fichier, $contenu, $ecrire_quand_meme = false, $truncate=true) {
+	$fichier .= ".php";
+	$contenu = "<"."?php die ('Acces interdit'); ?".">\n" . $contenu;
+	return ecrire_fichier($fichier, $contenu, $ecrire_quand_meme, $truncate);
+}
+
+/**
+ * Lire un fichier encapsule en php
+ * @param <type> $fichier
+ * @param <type> $contenu
+ * @param <type> $options 
+ */
+function lire_fichier_securise ($fichier, &$contenu, $options=false) {
+	if ($res = lire_fichier("$fichier.php",$contenu,$options)){
+		$contenu = substr($contenu,strlen("<"."?php die ('Acces interdit'); ?".">\n"));
+	}
+	return $res;
+}
+
 // http://doc.spip.org/@raler_fichier
 function raler_fichier($fichier)
 {
diff --git a/ecrire/inc/meta.php b/ecrire/inc/meta.php
index e37c0cd18a59b7287f70bacb5f7cb65a3af3baac..56eb3ce8a8d24197f178f73d23ddf0f0aba60de1 100644
--- a/ecrire/inc/meta.php
+++ b/ecrire/inc/meta.php
@@ -24,11 +24,12 @@ function inc_meta_dist()
 	// Lire les meta, en cache si present, valide et lisible
 	// en cas d'install ne pas faire confiance au meta_cache eventuel
 	if ((_request('exec')!=='install' OR !test_espace_prive())
-	AND $new = jeune_fichier(_FILE_META, _META_CACHE_TIME)
+	AND $new = jeune_fichier(_FILE_META.".php", _META_CACHE_TIME)
 #   AND (@filemtime(_FILE_META) > @filemtime(_DIR_RESTREINT . '.svn/entries'))
-	AND $meta = spip_file_get_contents(_FILE_META)
+	AND lire_fichier_securise(_FILE_META,$meta)
 	AND $meta = @unserialize($meta))
 		$GLOBALS['meta'] = $meta;
+
 	if (isset($GLOBALS['meta']['touch']) && ($GLOBALS['meta']['touch']<time()-_META_CACHE_TIME))
 		unset($GLOBALS['meta']);
 	// sinon lire en base
@@ -39,7 +40,7 @@ function inc_meta_dist()
 	AND (time() > _RENOUVELLE_ALEA + @$GLOBALS['meta']['alea_ephemere_date'])) {
 		// si on n'a pas l'acces en ecriture sur le cache,
 		// ne pas renouveller l'alea sinon le cache devient faux
-		if (supprimer_fichier(_FILE_META)) {
+		if (supprimer_fichier(_FILE_META.".php")) {
 			include_spip('inc/acces');
 			renouvelle_alea();
 			$new = false; 
@@ -74,13 +75,13 @@ function lire_metas() {
 // http://doc.spip.org/@touch_meta
 function touch_meta($antidate= false){
 
-	if (!$antidate OR !@touch(_FILE_META, $antidate)) {
+	if (!$antidate OR !@touch(_FILE_META.".php", $antidate)) {
 		$r = $GLOBALS['meta'];
 		unset($r['alea_ephemere']);
 		unset($r['alea_ephemere_ancien']);
 		unset($r['secret_du_site']);
 		if ($antidate) $r['touch']= $antidate;
-		ecrire_fichier(_FILE_META, serialize($r));
+		ecrire_fichier_securise(_FILE_META, serialize($r));
 	}
 }