diff --git a/ecrire/exec/naviguer.php b/ecrire/exec/naviguer.php
index 4359c12a268b3564572ee1284fb9a1b8ff170258..dd24a62b34d15a8c2e10a35a3463a2c695c5d19a 100644
--- a/ecrire/exec/naviguer.php
+++ b/ecrire/exec/naviguer.php
@@ -294,7 +294,7 @@ function contenu_naviguer($id_rubrique, $id_parent) {
 	//////////  Les articles publies
 	/////////////////////////
 
-	@define('_TRI_ARTICLES_RUBRIQUE', 'date');  # 'num titre'
+	if (!defined('_TRI_ARTICLES_RUBRIQUE')) define('_TRI_ARTICLES_RUBRIQUE', 'date');  # 'num titre'
 	$res .=  $lister_objets('articles',array('titre'=>_T('info_tous_articles_presents'),'statut'=>'publie', 'id_rubrique'=>$id_rubrique,'par'=>_TRI_ARTICLES_RUBRIQUE));
 
 	// si une rubrique n'a pas/plus d'article publie, afficher les eventuels articles refuses
diff --git a/ecrire/inc/ajouter_documents.php b/ecrire/inc/ajouter_documents.php
index 25408d7dc418daed2f1819aacfe8ec91100e3aca..8557bea811f06fdc5b4cc7ad9effbc1dd7d657d6 100644
--- a/ecrire/inc/ajouter_documents.php
+++ b/ecrire/inc/ajouter_documents.php
@@ -56,7 +56,7 @@ function inc_choisir_mode_document_dist($fichier, $type_lien, $type_image, $larg
 	// il suffit de faire dans mes_options
 	// define('_LARGEUR_MODE_IMAGE', 450);
 	// pour beneficier de cette detection auto
-	@define('_LARGEUR_MODE_IMAGE', 0);
+	if (!defined('_LARGEUR_MODE_IMAGE')) define('_LARGEUR_MODE_IMAGE', 0);
 	
 	if (!_LARGEUR_MODE_IMAGE)
 		return 'image';
diff --git a/ecrire/inc/distant.php b/ecrire/inc/distant.php
index f7c8c142c0b886c591d9d5b46e07c19d61833735..885b49f892f7a036937d8c0845edd8ce2a5540d7 100644
--- a/ecrire/inc/distant.php
+++ b/ecrire/inc/distant.php
@@ -12,9 +12,9 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-@define('_INC_DISTANT_VERSION_HTTP', "HTTP/1.0");
-@define('_INC_DISTANT_CONTENT_ENCODING', "gzip");
-@define('_INC_DISTANT_USER_AGENT', 'SPIP-'. $GLOBALS['spip_version_affichee']." (" . $GLOBALS['home_server'] . ")");
+if (!defined('_INC_DISTANT_VERSION_HTTP')) define('_INC_DISTANT_VERSION_HTTP', "HTTP/1.0");
+if (!defined('_INC_DISTANT_CONTENT_ENCODING')) define('_INC_DISTANT_CONTENT_ENCODING', "gzip");
+if (!defined('_INC_DISTANT_USER_AGENT')) define('_INC_DISTANT_USER_AGENT', 'SPIP-' .$GLOBALS['spip_version_affichee']. " (" .$GLOBALS['home_server']. ")");
 
 //@define('_COPIE_LOCALE_MAX_SIZE',2097152); // poids (inc/utils l'a fait)
 //
diff --git a/ecrire/inc/documents.php b/ecrire/inc/documents.php
index aea0006df850ed80b241e3fd3dc2929e44081129..190e298270ad82128865ac609fd4d980c7781044 100644
--- a/ecrire/inc/documents.php
+++ b/ecrire/inc/documents.php
@@ -46,7 +46,7 @@ function get_spip_doc($fichier) {
 
 // Constante indiquant le charset probable des documents non utf-8 joints
 
-@define('CHARSET_JOINT', 'iso-8859-1');
+if (!defined('CHARSET_JOINT')) define('CHARSET_JOINT', 'iso-8859-1');
 
 // Filtre pour #FICHIER permettant d'incruster le contenu d'un document
 // Si 2e arg fourni, conversion dans le charset du site si possible
diff --git a/ecrire/inc/flock.php b/ecrire/inc/flock.php
index e0b4c6eb889838b75348c9bdc7ea9830e520c14d..95e73b8039eb17114f3bddf5e2440aee0a88be32 100644
--- a/ecrire/inc/flock.php
+++ b/ecrire/inc/flock.php
@@ -15,7 +15,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 // ajouter define('_CREER_DIR_PLAT', true); dans mes_options pour restaurer
 // le fonctionnement des faux repertoires en .plat
 define('_CREER_DIR_PLAT', false);
-@define('_TEST_FILE_EXISTS',preg_match(',(online|free)[.]fr$,',$_ENV["HTTP_HOST"]));
+if (!defined('_TEST_FILE_EXISTS')) define('_TEST_FILE_EXISTS', preg_match(',(online|free)[.]fr$,', $_ENV["HTTP_HOST"]));
 
 #define('_SPIP_LOCK_MODE',0); // ne pas utiliser de lock (deconseille)
 #define('_SPIP_LOCK_MODE',1); // utiliser le flock php
diff --git a/ecrire/inc/minipres.php b/ecrire/inc/minipres.php
index cf4a8db88194253295a37411f7160ba4b6d51829..b6fe535ec487bc0e8cd954134ee191dfa5308d76 100644
--- a/ecrire/inc/minipres.php
+++ b/ecrire/inc/minipres.php
@@ -36,7 +36,7 @@ function install_debut_html($titre = 'AUTO', $onLoad = '') {
 		header('Content-Type: text/html; charset=utf-8');
 	
 	// au cas ou minipres() est appele avant spip_initialisation_suite()
-	@define('_DOCTYPE_ECRIRE', '');
+	if (!defined('_DOCTYPE_ECRIRE')) define('_DOCTYPE_ECRIRE', '');
 	return  _DOCTYPE_ECRIRE.
 		html_lang_attributes().
 		"<head>\n".
@@ -64,7 +64,7 @@ function install_fin_html() {
 // http://doc.spip.org/@minipres
 function minipres($titre='', $corps="", $onload='')
 {
-	@define('_AJAX',false); // par securite
+	if (!defined('_AJAX')) define('_AJAX', false); // par securite
 	if (!$titre) {
 		if (!_AJAX)
 			http_status(403);
diff --git a/ecrire/inc/prepare_recherche.php b/ecrire/inc/prepare_recherche.php
index c1544c4992c2bdde238ca6fed9fcd4a98ab6231e..0e5faf2287ecc16934c5a6772413ea443f9d275f 100644
--- a/ecrire/inc/prepare_recherche.php
+++ b/ecrire/inc/prepare_recherche.php
@@ -14,7 +14,7 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_spip('inc/rechercher');
-@define('_DELAI_CACHE_resultats',600);
+if (!defined('_DELAI_CACHE_resultats')) define('_DELAI_CACHE_resultats', 600);
 
 // Preparer les listes id_article IN (...) pour les parties WHERE
 // et points =  des requetes du moteur de recherche
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index 2c125464505f1a40593e73c83dbc77981313c638..5321540ab49a360fdaf5d74a99e813347ac86f4a 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -651,7 +651,7 @@ function lister_themes_prives(){
 	if (is_null($themes)){
 		// si pas encore definie
 		if (!defined('_SPIP_THEME_PRIVE'))
-			@define('_SPIP_THEME_PRIVE','spip');
+			define('_SPIP_THEME_PRIVE', 'spip');
 		$themes = array(_SPIP_THEME_PRIVE);
 		$prefs = $GLOBALS['visiteur_session']['prefs'];
 		if (is_string($prefs))
diff --git a/ecrire/inc/xml.php b/ecrire/inc/xml.php
index b0aa9dad9ff06971a7456506708bf50d54eebafc..ebc4c39098632526f08881eb36d6e96e59a9ca2e 100644
--- a/ecrire/inc/xml.php
+++ b/ecrire/inc/xml.php
@@ -27,7 +27,7 @@ function spip_xml_load($fichier, $strict=true, $clean=true, $taille_max = 104857
 	return count($arbre)?$arbre:false;
 }
 
-@define ('_SPIP_XML_TAG_SPLIT',"{<([^:>][^>]*?)>}sS");
+if (!defined('_SPIP_XML_TAG_SPLIT')) define('_SPIP_XML_TAG_SPLIT', "{<([^:>][^>]*?)>}sS");
 // http://doc.spip.org/@spip_xml_parse
 function spip_xml_parse(&$texte, $strict=true, $clean=true, $profondeur = -1){
 	$out = array();
diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php
index c8710e4892da27180908ae2984a01e2857ee541e..040f12138e45dd5c8ae376cfa217de6e5bd24f7a 100644
--- a/ecrire/inc_version.php
+++ b/ecrire/inc_version.php
@@ -348,8 +348,8 @@ require_once _ROOT_RESTREINT . 'base/connect_sql.php';
 if (_FILE_OPTIONS) {include_once _FILE_OPTIONS;}
 
 // Masquer les warning
-@define('E_DEPRECATED',8192); // compatibilite PHP 5.3
-define('SPIP_ERREUR_REPORT',E_ALL ^ E_NOTICE ^ E_DEPRECATED);
+if (!defined('E_DEPRECATED')) define('E_DEPRECATED', 8192); // compatibilite PHP 5.3
+define('SPIP_ERREUR_REPORT', E_ALL ^ E_NOTICE ^ E_DEPRECATED);
 error_reporting(SPIP_ERREUR_REPORT);
 
 // Initialisations critiques non surchargeables par les plugins
diff --git a/ecrire/install/etape_3.php b/ecrire/install/etape_3.php
index bf48eeff40295c889e2f2a216cdeb52c99c00039..1cd3094c02aa41e8f591e7f42c6ba2206d8d152f 100644
--- a/ecrire/install/etape_3.php
+++ b/ecrire/install/etape_3.php
@@ -142,7 +142,7 @@ function install_bases($adresse_db, $login_db, $pass_db,  $server_db, $choix_db,
 	if (!$result_ok) return "<!--\nvielle = $old rappel= $ligne_rappel\n-->";
 
 	if ($chmod_db) {
-		install_fichier_connexion(_FILE_CHMOD_TMP, "@define('_SPIP_CHMOD', ". sprintf('0%3o',$chmod_db).");\n");
+		install_fichier_connexion(_FILE_CHMOD_TMP, "if (!defined('_SPIP_CHMOD')) define('_SPIP_CHMOD', ". sprintf('0%3o',$chmod_db).");\n");
 	}
 
 	if (preg_match(',(.*):(.*),', $adresse_db, $r))
diff --git a/ecrire/public/assembler.php b/ecrire/public/assembler.php
index 2528a7315702385970f939df28c2054e62efcf66..2d3f57c65556c6b0916a30a67234a0db5ddba061 100644
--- a/ecrire/public/assembler.php
+++ b/ecrire/public/assembler.php
@@ -12,7 +12,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-@define('_CONTEXTE_IGNORE_VARIABLES',"/(^var_|^PHPSESSID$)/");
+if (!defined('_CONTEXTE_IGNORE_VARIABLES')) define('_CONTEXTE_IGNORE_VARIABLES', "/(^var_|^PHPSESSID$)/");
 //
 // calcule la page et les entetes
 // determine le contexte donne par l'URL (en tenant compte des reecritures) 
diff --git a/ecrire/public/composer.php b/ecrire/public/composer.php
index 39d9a515a1ac7e1d7c5af8e8aeadf1cbfa62281b..1538b2bf7a4f2029e27c8176318e1911cf43eed9 100644
--- a/ecrire/public/composer.php
+++ b/ecrire/public/composer.php
@@ -285,7 +285,7 @@ function filtre_introduction_dist($descriptif, $texte, $longueur, $connect) {
 	$texte = propre($texte,$connect);
 	$notes('','depiler');
 
-	@define('_INTRODUCTION_SUITE', '&nbsp;(...)');
+	if (!defined('_INTRODUCTION_SUITE')) define('_INTRODUCTION_SUITE', '&nbsp;(...)');
 	$texte = couper($texte, $longueur, _INTRODUCTION_SUITE);
 
 	// et reparagrapher si necessaire (coherence avec le cas descriptif)
diff --git a/prive/squelettes/contenu/auteurs_fonctions.php b/prive/squelettes/contenu/auteurs_fonctions.php
index 75b9080186a673acba249aa868b23d4e0616d69b..5ed4666c1715a99f37812fe6009801d4ffac7d9c 100644
--- a/prive/squelettes/contenu/auteurs_fonctions.php
+++ b/prive/squelettes/contenu/auteurs_fonctions.php
@@ -12,8 +12,8 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 // Constante pour le nombre d'auteurs par page.
-@define('AUTEURS_MIN_REDAC', "0minirezo,1comite,5poubelle");
-@define('AUTEURS_DEFAUT', '');
+if (!defined('AUTEURS_MIN_REDAC')) define('AUTEURS_MIN_REDAC', "0minirezo,1comite,5poubelle");
+if (!defined('AUTEURS_DEFAUT')) define('AUTEURS_DEFAUT', '');
 include_spip('inc/presentation');
 
 function auteurs_lister_statuts() {
diff --git a/prive/squelettes/contenu/visiteurs_fonctions.php b/prive/squelettes/contenu/visiteurs_fonctions.php
index 89cb93269c263851d6a0a22d6fffc13b63fc2bff..b8b9e715832095a3370e9728c08ac2b5179a76eb 100644
--- a/prive/squelettes/contenu/visiteurs_fonctions.php
+++ b/prive/squelettes/contenu/visiteurs_fonctions.php
@@ -12,7 +12,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 // Constante pour le nombre d'auteurs par page.
-@define('AUTEURS_DEFAUT', '!');
+if (!defined('AUTEURS_DEFAUT')) define('AUTEURS_DEFAUT', '!');
 include_spip('prive/squelettes/contenu/auteurs_fonctions');
 
 ?>
\ No newline at end of file
diff --git a/spip.php b/spip.php
index 58d165991ac7c4d2bfa569b8301cb3e37995de7c..e0274453b410f90a899bdc3c73a397d04f4cb9fd 100644
--- a/spip.php
+++ b/spip.php
@@ -11,7 +11,7 @@
 \***************************************************************************/
 
 # ou est l'espace prive ?
-@define('_DIR_RESTREINT_ABS', 'ecrire/');
+if (!defined('_DIR_RESTREINT_ABS')) define('_DIR_RESTREINT_ABS', 'ecrire/');
 include_once _DIR_RESTREINT_ABS.'inc_version.php';
 
 # rediriger les anciens URLs de la forme page.php3fond=xxx