Vider le cache sans vous connecter

10

J'ai ajouté une instruction if autour du contenu rendu php dans mon fichier page.tpl.php. Le seul problème est que j'ai fait une erreur et l'ai accidentellement empêché de rendre le contenu sur n'importe quelle page. J'ai vidé le cache et me suis déconnecté pour le tester, et réalisant mon erreur, j'ai corrigé le fichier modèle. Mais maintenant, je ne peux pas me reconnecter pour effacer le cache à nouveau car mon site ne rendra pas le contenu et ne rendra donc pas la boîte de connexion.

Quelqu'un peut-il me donner un moyen dans Drupal 7 de se connecter sans la boîte de connexion (comme un moyen de rendre la boîte de connexion séparément au contenu) ou un moyen de vider le cache?

JamiePatt
la source
2
Si vous avez accès à la base de données, exécutez simplement TRUNCATE TABLE table_namela cachetable et toutes les autres tables commençant parcache_
Clive
2
Si vous avez installé drush, vous pouvez le faire drush ccdepuis le terminal en vous tenant debout dans votre racine drupal.
Cyclonecode
Dans votre page tpl, lancez simplement drupal_flush_all_caches ();
Anil Sagar

Réponses:

12

je. Si vous avez installé drush (http://drupal.org/project/drush) - si vous ne l'avez pas, pensez-y la prochaine fois :), ouvrez la console (WIN + R) dans Windows ou Ctrl + Alt + T sous Linux pointez sur votre dossier de site (par exemple cd /www/mydrupalsite/et tapez:

 $ drush cc all

à partir de la ligne de commande.

ii. Une autre méthode consiste à vous connecter à votre phpmyadmin, sélectionnez vos tables cache_ et videz / videz-les.

drupal_stuff_alter
la source
6

La meilleure solution que j'ai trouvée à la fin était de le faire via phpmyadmin. Je me suis connecté et j'ai vidé toutes les tables qui avaient "cache" au début de leur nom. Facile si vous ne travaillez pas dans l'urgence.

JamiePatt
la source
Répéter la réponse de drupal_stuff_alter en partie sans aucune information supplémentaire n'est guère utile, et à mon avis très dédaigneux du concept de ce site. Je ne peux même pas commencer à supposer pourquoi vous voudriez faire dérailler les gens qui trouveraient cette question à l'avenir en publiant et en acceptant une réponse qui ommet la drushméthode, ce qui prend clairement moins de temps et d'efforts, et en plus de cela est le moyen prévu.
TheThirdMan
5

En plus des options mentionnées ci-dessus, comme dernier effort, vous pouvez appeler la fonction drupal_flush_all_caches()pour effacer tous les caches.

Vous pouvez le faire en plaçant le code ci-dessous dans un fichier php à la racine de votre document et en le visitant avec un navigateur:

define('DRUPAL_ROOT', getcwd());
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
drupal_flush_all_caches();

Je n'ai pas testé ce code et assurez-vous de le supprimer après avoir effacé vos caches.

Phizes
la source
Notez que vous devez d'abord définir la constante DRUPAL_ROOT. Il ne s'affichait pas dans l'exemple de code à l'origine, j'ai donc ajouté un espace blanc pour qu'il s'affiche maintenant.
Ryan Szrama
2

Vous pouvez définir

$update_free_access = TRUE;

dans settings.php (vers la ligne 226) et accédez à /update.php. Cela effacera le cache.

mymwbg
la source
0

Vous pouvez vider le cache Drupal en exécutant la commande suivante soit dans la console de commande Windows, soit à partir d'un fichier .bat (ou à partir de la console Linux):

php -r "define ('DRUPAL_ROOT', '../web'); chdir (DRUPAL_ROOT); define ('MAINTENANCE_MODE', 'update'); global $ _SERVER; $ _SERVER ['REMOTE_ADDR'] = '127.0.0.1 '; require_once DRUPAL_ROOT.' / includes / bootstrap.inc '; drupal_bootstrap (DRUPAL_BOOTSTRAP_FULL); drupal_flush_all_caches (); "

Assurez-vous simplement que DRUPAL_ROOT dans le code pointe vers le répertoire Drupal.

Vyacheslav Petrov
la source
0
delete from cache where cid <> '';
delete from cache_block where cid <> '';
delete from cache_bootstrap where cid <> '';
delete from cache_field where cid <> '';
delete from cache_filter where cid <> '';
delete from cache_path where cid <> '';
delete from cache_libraries where cid <> '';
delete from cache_image where cid <> '';
delete from cache_page where cid <> '';
delete from cache_token where cid <> '';
delete from cache_update where cid <> '';
delete from cache_views where cid <> '';
delete from cache_views_data where cid <> '';
Ashish Madkaikar
la source