diff --git a/ecrire/exec/accueil.php b/ecrire/exec/accueil.php
index 1fdee2549212256b1e67b59d147554453acc0ac3..dc100ff6f00a1d239b6fac94cfee1406f6099994 100644
--- a/ecrire/exec/accueil.php
+++ b/ecrire/exec/accueil.php
@@ -382,6 +382,7 @@ function etat_base_accueil()
 // http://doc.spip.org/@accueil_liste_participants
 function accueil_liste_participants()
 {
+	global $spip_lang_left;
 	$q = spip_query("SELECT COUNT(*) AS cnt, statut FROM spip_auteurs GROUP BY statut HAVING cnt <>0 AND statut IN ('" . join("','", $GLOBALS['liste_des_statuts']) . "')");
 
 	$cpt = array();
diff --git a/ecrire/exec/install.php b/ecrire/exec/install.php
index 08e79563d5916921f4f7d31533b848a11919774f..e461ed86ab8d66a2b4f84ec5349db6848a2e87b9 100644
--- a/ecrire/exec/install.php
+++ b/ecrire/exec/install.php
@@ -99,7 +99,7 @@ function login_hebergeur() {
 	else if (preg_match(',(.*)\.free\.fr$,', $SERVER_NAME, $regs)) {
 		$base_hebergeur = 'sql.free.fr';
 		$login_hebergeur = $regs[1];
-	}
+	} else $login_hebergeur = '';
 
 	return array($base_hebergeur, $login_hebergeur);
 }
@@ -151,9 +151,9 @@ function fieldset($legend, $champs = array(), $horchamps='') {
 	$fieldset = "<fieldset>\n" .
 	($legend ? "<legend>".$legend."</legend>\n" : '');
 	foreach ($champs as $nom => $contenu) {
-		$type = $contenu['hidden'] ? 'hidden' : (preg_match(',^pass,', $nom) ? 'password' : 'text');
-		$class = $contenu['hidden'] ? '' : "class='formo' size='40' ";
-		if(is_array($contenu['alternatives'])) {
+		$type = isset($contenu['hidden']) ? 'hidden' : (preg_match(',^pass,', $nom) ? 'password' : 'text');
+		$class = isset($contenu['hidden']) ? '' : "class='formo' size='40' ";
+		if(isset($contenu['alternatives'])) {
 			$fieldset .= $contenu['label'] ."\n";
 			foreach($contenu['alternatives'] as $valeur => $label) {
 				$fieldset .= "<input type='radio' name='".$nom .
diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index 9cc9b801cf6b5de662c482cc809c388cffd49de1..e3d652c4363adcd4cb549f9bd5b947b83a612e08 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -387,7 +387,7 @@ function echapper_tags($texte, $rempl = "") {
 // Convertit un texte HTML en texte brut
 // http://doc.spip.org/@textebrut
 function textebrut($texte) {
-	$u = ($GLOBALS['meta']['charset']=='utf-8' && test_pcre_unicode()) ? 'u':'';
+	$u = (@$GLOBALS['meta']['charset']=='utf-8' && test_pcre_unicode()) ? 'u':'';
 	$texte = preg_replace('/\s+/'.$u.'S', " ", $texte);
 	$texte = preg_replace("/<(p|br)( [^>]*)?".">/iS", "\n\n", $texte);
 	$texte = preg_replace("/^\n+/", "", $texte);
diff --git a/ecrire/inc/flock.php b/ecrire/inc/flock.php
index 6c8400e4970aa7f1da9199f77fc16be7e36b518a..f529696652c13463fa0b328b404d9bf0558ffb6f 100644
--- a/ecrire/inc/flock.php
+++ b/ecrire/inc/flock.php
@@ -107,7 +107,7 @@ function ecrire_fichier ($fichier, $contenu, $ecrire_quand_meme = false, $trunca
 	// liberer le verrou et fermer le fichier
 	@flock($fp, LOCK_UN);
 	@fclose($fp);
-
+	@chmod($fichier, _SPIP_CHMOD & 0666);
 	if (!$ok) {
 		spip_log("echec ecriture fichier $fichier");
 		@unlink($fichier);
diff --git a/ecrire/inc/headers.php b/ecrire/inc/headers.php
index 93d0bdb2b1bf03ec855fb337e7c96a338f0c14eb..37e2805aea56f9e31c826134b2aaaa55d9e956f2 100644
--- a/ecrire/inc/headers.php
+++ b/ecrire/inc/headers.php
@@ -82,7 +82,7 @@ function http_status($status) {
 // http://doc.spip.org/@http_no_cache
 function http_no_cache() {
 	if (headers_sent()) return;
-	if (!$charset = $GLOBALS['meta']['charset']) $charset = 'utf-8';
+	$charset = empty($GLOBALS['meta']['charset']) ? 'utf-8' : $GLOBALS['meta']['charset'];
 
 	// selon http://developer.apple.com/internet/safari/faq.html#anchor5
 	// il faudrait aussi pour Safari
diff --git a/ecrire/inc/lang.php b/ecrire/inc/lang.php
index fa7f731609c5a1fcf420e8b0b6943c66a7202404..594bdc2f0697af9ae0844111e8a3dfe0992dcff7 100644
--- a/ecrire/inc/lang.php
+++ b/ecrire/inc/lang.php
@@ -224,7 +224,7 @@ function verifier_lang_url() {
 //
 // http://doc.spip.org/@utiliser_langue_site
 function utiliser_langue_site() {
-	return changer_langue($GLOBALS['meta']['langue_site']);
+	return changer_langue(@$GLOBALS['meta']['langue_site']);//@:install
 }
 
 // http://doc.spip.org/@utiliser_langue_visiteur
diff --git a/ecrire/inc/securiser_action.php b/ecrire/inc/securiser_action.php
index bcd67405033bddb7a9f20adc9b5f438d7fe93fc0..36ad9bba07ca19a8f61a03e61a1fdf99798384a7 100644
--- a/ecrire/inc/securiser_action.php
+++ b/ecrire/inc/securiser_action.php
@@ -60,10 +60,9 @@ function caracteriser_auteur() {
 
 	if ($caracterisation) return $caracterisation;
 
-	$id_auteur = $auteur_session['id_auteur'];
-	if (!$id_auteur) {
+	if (!isset($auteur_session['id_auteur'])) {
   // si l'auteur courant n'est pas connu alors qu'il peut demander une action
-  // c'est une connexion par php_auth, on se rabat sur le cookie.
+  // c'est une connexion par php_auth ou 1 instal, on se rabat sur le cookie.
   // S'il n'avait pas le droit de realiser cette action, le hash sera faux.
 		if (isset($_COOKIE['spip_session'])
 		AND (preg_match('/^(\d+)/',$_COOKIE['spip_session'],$r))) {
@@ -73,7 +72,7 @@ function caracteriser_auteur() {
 		} else return array('',''); 	  
 	}
 	// Eviter l'acces SQL si le pass est connu de PHP
-
+	$id_auteur = $auteur_session['id_auteur'];
 	if (isset($auteur_session['pass']) AND $auteur_session['pass'])
 		return $caracterisation = array($id_auteur, $auteur_session['pass']); 
 	else {
@@ -88,7 +87,7 @@ function caracteriser_auteur() {
 
 // http://doc.spip.org/@_action_auteur
 function _action_auteur($action, $id_auteur, $pass, $nom_alea) {
-	return md5($action.$id_auteur.$pass .$GLOBALS['meta'][$nom_alea]);
+	return md5($action.$id_auteur.$pass .@$GLOBALS['meta'][$nom_alea]);
 }
 
 // http://doc.spip.org/@calculer_action_auteur
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index 9936056d2136516fb3afff7fbcc006fd572cba4b..c2f5f992ed7474fbbdb5fbe10cc992ad65e7bcc2 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -1125,10 +1125,12 @@ function spip_initialisation($pi=NULL, $pa=NULL, $ti=NULL, $ta=NULL) {
 	:	false));
 
 	// Definition des droits d'acces en ecriture
-	if(!_FILE_CHMOD)
-		define('_SPIP_CHMOD', 0777);
-	else
-		include_once _FILE_CHMOD;
+	if (!defined('_SPIP_CHMOD')) {
+		if(_FILE_CHMOD)
+			include_once _FILE_CHMOD;
+		else
+			define('_SPIP_CHMOD', 0777);
+	}
 
 	// la taille maxi des logos (0 : pas de limite)
 	define('_LOGO_MAX_SIZE', 0); # poids en ko
diff --git a/ecrire/index.php b/ecrire/index.php
index d1a0769e51aacb83d329f0c46ae51ed7c05d93ec..a6c9870914e5fb45ce18738a3065fe380f05e03d 100644
--- a/ecrire/index.php
+++ b/ecrire/index.php
@@ -141,6 +141,7 @@ AND isset($GLOBALS['meta']["import_all"])) {
 // Verification des plugins
 // (ne pas interrompre une restauration ou un upgrade)
 elseif ($exec!='upgrade'
+AND !$var_auth
 AND $GLOBALS['auteur_session']['statut']=='0minirezo'
 AND !_DIR_RESTREINT
 AND lire_fichier(_DIR_TMP.'verifier_plugins.txt',$l)
diff --git a/ecrire/install/etape_3.php b/ecrire/install/etape_3.php
index 78c6104bf51493a59dccae3186b1d041a98f3bb9..95899cb781ae05301d0fcce5bb3d388ecbf588d5 100644
--- a/ecrire/install/etape_3.php
+++ b/ecrire/install/etape_3.php
@@ -128,7 +128,7 @@ function install_bases(){
 	if($chmod) {
 		$conn = "<"."?php\n";
 		$conn .= "if (!defined(\"_ECRIRE_INC_VERSION\")) return;\n";
-		$conn .= "define('_SPIP_CHMOD', ".$chmod.");\n";
+		$conn .= "@define('_SPIP_CHMOD', ". sprintf('0%3o',$chmod).");\n";
 		$conn .= "?".">";
 		if (!ecrire_fichier(_FILE_CHMOD_INS . _FILE_TMP . '.php',
 		$conn))