Désactiver toutes les extensions à la fois

Description : Divers méthodes pour désactiver les extensions en même temps

Catégories : Administration

Lien vers cet article: Tout sélectionner

[url=https://caforum.fr/forum/app.php/kb/viewarticle?a=6]Base de connaissance - Désactiver toutes les extensions à la fois[/url]

Description : explique comment désactiver toutes les extensions à la fois. Utile lorsque vous avez trop d'extensions pour le faire manuellement ou lorsqu'une extension non fiable vous empêche d'accéder au panneau de configuration d'administration.

Dans les catégories : Administration



Désactivation de toutes les extensions
Il y a plusieurs raisons pour lesquelles vous pourriez vouloir ou avoir besoin de désactiver toutes vos extensions et il existe plusieurs façons d'y parvenir selon les circonstances.

La désactivation des extensions signifie que la ou les extensions ne sont pas visibles par phpBB, de sorte qu'il n'effectue pas l'action pour laquelle il a été conçu - cela ne supprime pas les fichiers ou les options de configuration que vous avez définis et lorsque vous réactivez le extension les options de configuration seront toujours là.

Raisons de la désactivation des extensions
  • Vous ne voulez plus d'extensions.
  • Vous devez mettre à jour une extension.
  • Vous avez un problème avec une extension, mais vous ne savez pas laquelle, vous devez donc désactiver toutes vos extensions, puis les réactiver une par une jusqu'à ce que vous trouviez l'extension à l'origine du problème.
  • Vous passez à une autre version de phpBB et vous souhaitez vous assurer que toutes vos extensions sont compatibles. En désactivant toutes vos extensions, avant de procéder à la mise à niveau, vous pouvez les réactiver une par une pour garantir la compatibilité.
  • Vous avez une extension «non autorisée» qui empêche l'accès à votre PCA et/ou à votre forum.
Comment ne pas désactiver les extensions
  • Vous ne devez pas, lorsque vous essayez de désactiver une extension, exécuter une requête SQL sur la base de données car cela ne désactivera pas correctement vos extensions dans certaines situations et pourrait causer encore plus de problèmes avec votre forum au risque qu'il ne fonctionne pas correctement, ou peut-être pas du tout.
  • Vous ne devez pas supprimer les fichiers de l'extension du dossier ext - cela ne désactivera pas vos extensions et entraînera la création d'autres erreurs.

Corriger les méthodes pour désactiver les extensions, comment/quand utiliser chaque méthode et les avantages et inconvénients


Manuellement, depuis le PCA, où vous désactivez vos extensions une par une.
  • Quand - à tout moment où vous souhaitez désactiver une extension.
  • Avantages - intégré au cœur de phpBB et est la méthode par défaut.
  • Inconvénients - peut devenir laborieux si vous avez de nombreuses extensions. Ce ne sera pas possible si vous ne pouvez pas accéder au PCA.
  • Utilisation - Gestion des extensions d'accès dans le PCA

Manuellement, via l'interface de ligne de commande (CLI) où, encore une fois, vous désactivez vos extensions une par une.
  • Quand - principalement si vous ne parvenez pas à accéder au PCA.
  • Avantages - fonction de base intégrée de phpBB. Peut être utile si vous ne pouvez pas accéder au PCA.
  • Inconvénients - nécessite un accès shell ou SSH à votre serveur et vous devez connaître le fournisseur et le nom de l'extension pour chaque extension. Cela peut être une méthode très lente s'il existe de nombreuses extensions que vous souhaitez désactiver car vous devrez taper les détails de chaque extension.
  • Utilisation - pour plus de détails sur l'utilisation de la CLI, cliquez ici

En utilisant l'extension Désactiver toutes les extensions, où toutes vos extensions peuvent être désactivées en une seule fois.
  • Quand - à tout moment où vous souhaitez/devez désactiver toutes vos extensions.
  • Avantages - option de désactivation rapide «en un clic».
  • Inconvénients - nécessité d'installer et d'activer l'extension. Nécessite un accès au PCA. Uniquement disponible pour phpBB 3.2 et supérieur.
  • Utilisation - vous pouvez télécharger l'extension Désactiver toutes les extensions ici

En utilisant le script Disable Extensions.
  • Quand - lorsque vous devez désactiver vos extensions et que vous ne pouvez pas accéder à votre forum d'une autre manière.
  • Avantages - ne nécessite pas d'accès direct au PCA ou au forum.
  • Inconvénients - nécessite le statut de fondateur pour fonctionner. Nécessite un accès FTP à votre serveur.
  • Utilisation - Enregistrez le fichier ajouté ci-dessous et téléchargez-le à la racine du forum (même endroit où se trouve config.php) sous ext_disable.php. Accédez ensuite au fichier dans votre navigateur et exécutez-le.

Code : Tout sélectionner

<?php
/***
*
* Usage: Download and unzip the file, upload it to your Board's root (i.e.: www.mydomain.com/phpBB3/)
* Point your browser to i.e.: www.mydomain.com/phpBB3/ext_disable.php) and follow instructions.
*
* Version 1.0.0 - david63 2017
* Based on modisson.php - Oyabun1 2015
*
* This script is free software. It comes without any warranty.
* license http://opensource.org/licenses/GPL-2.0 GNU General Public License v2.
*
* Ensure that you have a backup of your Database before to run this tool
*
*/

define('IN_PHPBB', true);

$phpbb_root_path	= (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx 				= substr(strrchr(__FILE__, '.'), 1);

// Change this to 'false' if you do not want to delete this file
$remove_me = true;

include($phpbb_root_path . 'common.' . $phpEx);
include_once($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
include_once($phpbb_root_path . 'phpbb/extension/manager.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);

/* If ANONYMOUS = login box */
if ((int) $user->data['user_id'] == ANONYMOUS)
{
	login_box(request_var('redirect', "ext_disable.$phpEx"));
}

// Limit this to founders or admins
if ((int) $user->data['user_type'] !== USER_FOUNDER || !$auth->acl_get('a_'))
{
	trigger_error('You do not have permission to alter the database.
	You need to be logged in as a founder or administrator.');
}

// Let's see how many extension we can disable
$orig_ext_count = get_active_ext();

// Create a HTML5 page to add some form elements and display stuff
echo '<!DOCTYPE html>';
echo '<html>';
echo '<head>';
echo '<meta http-equiv="content-type" content="text/html; charset=UTF-8" />';
echo '<title>' . basename(__FILE__) . '</title>';

echo '<style type="text/css">
	body {
		font-size: 1em;
		background-color: #C0C0C0 ;
		width: 600px;
		margin: 2em auto 0;
	}

	form {
		text-align: center;
		line-height: 230%;
	}

	fieldset {
		-moz-border-radius:7px;
		border-radius: 7px;
		-webkit-border-radius: 7px;
	}

	h3 {
		text-align: center;
	}

	label {
		cursor: pointer;
		background-color: #FFD700;
		border-style: outset;
		border-width; 1px;
		border-radius: 7px;
		border-color: #808080;
		font-size: 1.1em;
		padding: 2px;
		margin: 2px;
	}

	input[type="checkbox"]:disabled {
    	opacity:0;
	}

	input[type="checkbox"] {
		cursor: pointer;
	}

	img.mid {
		display: block;
		margin-top: 1em;
		margin-left: auto;
		margin-right: auto
	}

	/* Buttons based on Pressable CSS Buttons by Joshua Hibbert */
	.button {
		background-image: -webkit-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,0%,.1));
		background-image:    -moz-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,0%,.1));
		background-image:     -ms-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,0%,.1));
		background-image:      -o-linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,0%,.1));
		background-image:         linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,0%,.1));
		border: none;
		border-radius: 1.25em;
		box-shadow: inset 0 0 0 1px hsla(0,0%,0%,.25),
					inset 0 2px 0 hsla(0,0%,100%,.1),
					inset 0 1.2em 0 hsla(0,0%,100%,.05),
					inset 0 -.2em 0 hsla(0,0%,100%,.1),
					inset 0 -.25em 0 hsla(0,0%,0%,.5),
					0 .25em .25em hsla(0,0%,0%,.1);
		color: #fff;
		text-shadow: 0 -1px 1px hsla(0,0%,0%,.25);
		cursor: pointer;
		display: inline-block;
		font-family: sans-serif;
		font-size: 1.1em;
		font-weight: bold;
		line-height: 150%;
		margin: 0 .5em;
		padding: .25em .75em .5em;
		position: relative;
		text-decoration: none;
		vertical-align: middle;
	}

	.button:hover {
		outline: none;
	}

	.button:hover, .button:focus {
		box-shadow: inset 0 0 0 1px hsla(0,0%,0%,.25),
					inset 0 2px 0 hsla(0,0%,100%,.1),
					inset 0 1.2em 0 hsla(0,0%,100%,.05),
					inset 0 -.2em 0 hsla(0,0%,100%,.1),
					inset 0 -.25em 0 hsla(0,0%,0%,.5),
					inset 0 0 0 3em hsla(0,0%,100%,.2),
					0 .25em .25em hsla(0,0%,0%,.1);
	}

	.button:active {
		box-shadow: inset 0 0 0 1px hsla(0,0%,0%,.25),
					inset 0 2px 0 hsla(0,0%,100%,.1),
					inset 0 1.2em 0 hsla(0,0%,100%,.05),
					inset 0 0 0 3em hsla(0,0%,100%,.2),
					inset 0 .25em .5em hsla(0,0%,0%,.05),
					0 -1px 1px hsla(0,0%,0%,.1),
					0 1px 1px hsla(0,0%,100%,.25);
		margin-top: .25em;
		outline: none;
		padding-bottom: .5em;
	}

	.green {
		background-color: #228B22;
	}

	.remove_me {
		color: #FFFFFF;
		width: 560px;
		margin: 2em auto 0;
		padding: .5em;
		font-size: 1.1em;
		background-color: #8B0000;
	}

</style>';

echo '</head>';
echo '<body>';

// Create a form with a checkbox
echo '<h3>Disable all extensions</h3>';
echo '<fieldset><legend><strong>Check the selection box and click the Run button.</strong></legend>';
echo '<form action="' . basename(__FILE__) . '" method="post" onsubmit="return confirm(\'You are about to disable ' . $orig_ext_count . ' extensions. \n Make sure you first have a database backup. \n If you click OK there is no going back.\')">';
echo '<label title="Disable '. $orig_ext_count . ' extensions"><input type="checkbox" name="chkExt"
	value="Yes" />Disable '. $orig_ext_count . ' extensions&nbsp;</label>&nbsp;';
echo '<p><button type="submit" class="button green";>Run</button></p>';
echo '</form>';
echo '</fieldset><br>';
echo '<fieldset style="background-color:#F5FCFF; border-color:#00CC00; border-style: solid;"><legend>
		<strong>Result</strong></legend>';

// Use request_var() to get the returned value of the selection
$chk_ext = (request_var('chkExt', ''));

// Get the current version from 'includes/constants.php'
$version = PHPBB_VERSION;

// Let's make sure that we are running phpBB > 3.1
if (phpbb_version_compare($version, '3.1.0', '>='))
{
	// Disable extensions
	if($chk_ext == 'Yes')
	{
		// Get the enabled extensions
		$sql = 'SELECT ext_name
			FROM ' . EXT_TABLE . '
			WHERE ext_active = 1';

		$result = $db->sql_query($sql);

		// Now we can try to disable the extensions
		if (!empty($result))
		{
			while ($ext_name = $db->sql_fetchrow($result))
			{
				while ($phpbb_extension_manager->disable_step($ext_name['ext_name']));
			}

			$db->sql_freeresult($result);
		}
		else
		{
			echo 'No extensions found to disable';

			remove_me();
		}

		// Get count of extensions disabled
		$disabled_ext = $orig_ext_count - get_active_ext();

		// Add disable action to the admin log
		add_log('admin', $disabled_ext . ' extensions disabled');

		echo $disabled_ext . ' extensions have been disabled.';

		remove_me();
	}
}
else
{
	// User has an invalid version of phpBB
	echo 'This script can only be run on versions of phpBB greater than 3.1.0<br />Your version of phpBB: /includes/constants.php ' . $version .'<br>Since the version is invalid no extensions are able to be disabled.<br>';

	remove_me();
}

echo '</form>';
echo '</fieldset>';
echo '</body>';
echo '</html>';


// Get count of active extensions
function get_active_ext()
{
	global $db;

	$sql = 'SELECT COUNT(ext_active) AS active_ext
		FROM ' . EXT_TABLE . '
		WHERE ext_active = 1';

	$result		= $db->sql_query($sql);
	$ext_count	= (int)$db->sql_fetchfield('active_ext');

	$db->sql_freeresult($result);

	return $ext_count;
}

// Try to delete this file
function remove_me()
{
	if ($remove_me)
	{
		@unlink(__FILE__);

		// Windows IIS servers may have a problem with unlinking recently created files.
		// So check if file exists and give a message
		if (file_exists(__FILE__))
		{
			echo '<p class="remove_me">File could not be deleted. You will need to manually delete the ' . basename(__FILE__) . ' file from the server.</p>';
		}
	}
}

Traduit depuis phpbb.com
CAForum-phpBB  : Disclaimer