Drupal es un sistema de gestión de contenidos de nivel empresarial, conocido por su flexibilidad y su potencia. Pero esa potencia también trae retos. En este artículo repasamos los 15 problemas más frecuentes de Drupal y cómo resolverlos.

1. White Screen of Death (WSOD)

La temida pantalla en blanco sin ningún mensaje de error.

Causas

  • Límite de memoria de PHP
  • Error fatal de PHP
  • Módulo corrupto
  • Problema de conexión con la base de datos

Solución

Activar los mensajes de error:

En sites/default/settings.php, añade lo siguiente:

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
$config['system.logging']['error_level'] = 'verbose';

Aumentar la memoria de PHP:

ini_set('memory_limit', '512M');

Con Drush (si está disponible):

drush watchdog:show --count=50

2. "The website encountered an unexpected error"

Página de error genérica en Drupal 8/9/10.

Solución

Consulta los registros:

drush watchdog:show
# of
tail -f /path/to/drupal/sites/default/files/logs/drupal.log

Registro reciente en la base de datos:

SELECT * FROM watchdog ORDER BY wid DESC LIMIT 20;

3. Errores de conexión con la base de datos

Mensajes de error "PDOException" o "SQLSTATE".

Causas

  • Credenciales incorrectas de la base de datos
  • El servidor de base de datos no está accesible
  • Demasiadas conexiones
  • Tablas corruptas

Solución

Comprobar las credenciales en settings.php:

$databases['default']['default'] = [
  'database' => 'drupal_db',
  'username' => 'db_user',
  'password' => 'db_password',
  'host' => 'localhost',
  'driver' => 'mysql',
  'port' => 3306,
];

Reparar la base de datos:

drush sql:query "REPAIR TABLE cache_default, cache_entity, cache_render;"

4. Problemas de caché

Los cambios no se ven o el sitio se comporta de forma extraña.

Solución

Vaciar toda la caché:

drush cache:rebuild
# of korter:
drush cr

Desde la interfaz (si está accesible): Configuration → Performance → Clear all caches

Vaciar la caché manualmente:

rm -rf sites/default/files/css/*
rm -rf sites/default/files/js/*

Caché de Twig:

rm -rf sites/default/files/php/*

5. Falla la instalación o la actualización de un módulo

Composer da errores o el módulo no funciona.

Causas

  • Conflicto de dependencias
  • Permisos insuficientes
  • Límite de memoria
  • Versión incompatible

Solución

Aumentar la memoria de Composer:

COMPOSER_MEMORY_LIMIT=-1 composer require drupal/module_name

Actualizar las dependencias:

composer update --with-dependencies

Comprobar el estado del módulo:

drush pm:list --status=enabled

Instalación forzada:

drush pm:enable module_name -y
drush updatedb -y

6. Problemas al subir archivos

Falla la subida de medios o archivos.

Solución

Ajustar la configuración de PHP:

En .htaccess o php.ini:

upload_max_filesize = 64M
post_max_size = 64M
max_file_uploads = 20

Permisos de archivos:

chmod -R 775 sites/default/files
chown -R www-data:www-data sites/default/files

Carpeta temporal: Comprueba que se pueda escribir en la carpeta tmp:

// In settings.php
$settings['file_temp_path'] = '/tmp';

7. "Access denied" en contenido o administración

De repente no tienes acceso a determinadas páginas.

Causas

  • Configuración de permisos
  • Módulos de acceso a contenido
  • Caché de permisos corrupta

Solución

Reconstruir la caché de permisos:

drush php-eval 'node_access_rebuild();'

Restaurar los permisos del usuario 1:

drush user:login

Comprobar los permisos de los roles: Ve a People → Permissions y comprueba la configuración.

8. Las vistas no cargan o dan errores

Los problemas con el módulo Views son habituales.

Solución

Caché específica de Views:

drush views:invalidate --all
drush cr

Exportar la vista y volver a importarla:

  1. Exporta la configuración de la vista
  2. Elimina la vista
  3. Vuelve a importarla

Depurar la consulta: Activa la depuración de consultas de Views en la configuración de la vista.

9. Rendimiento lento de la web

Drupal puede volverse lento sin una buena optimización.

Solución

Activar la caché:

  1. Configuration → Performance
  2. Pon "Page cache maximum age" en una hora o más
  3. Marca "Aggregate CSS files" y "Aggregate JavaScript files"

Redis/Memcache:

composer require drupal/redis
drush pm:enable redis

Optimizar la base de datos:

drush sql:query "OPTIMIZE TABLE node, node_field_data, users, cache_default;"

Limitar los registros de watchdog: Limita el tamaño de la tabla watchdog o cambia a syslog.

10. Fallan los update hooks

drush updatedb da errores.

Solución

Volver a ejecutar una actualización concreta:

drush updatedb-status
drush updatedb

Ejecutar el hook manualmente:

drush php-eval 'module_load_install("module_name"); module_name_update_8001();'

Restablecer el estado de la base de datos:

DELETE FROM key_value WHERE collection = 'system.schema' AND name = 'module_name';

11. Problemas de sincronización de la configuración

La importación o exportación de la configuración no funciona correctamente.

Causas

  • UUID que no coincide
  • Dependencias que faltan
  • Configuración obsoleta

Solución

Ver el estado de la configuración:

drush config:status

Importar una configuración concreta:

drush config:import --partial --source=/path/to/config

Sincronizar el UUID:

drush config:get system.site uuid

12. Problemas de theme o plantilla

El frontend se ve mal o aparecen errores de Twig.

Solución

Activar la depuración de Twig:

En sites/default/services.yml, añade lo siguiente:

parameters:
  twig.config:
    debug: true
    auto_reload: true
    cache: false

Vaciar la caché del theme:

drush cr

Ver las sugerencias de plantilla: Con la depuración de Twig activada, ves las template suggestions en el código fuente HTML.

13. El cron no se ejecuta

Las tareas programadas no se ejecutan.

Solución

Ejecutar el cron manualmente:

drush cron

URL del cron (para un cron externo):

https://example.nl/cron/CRON_KEY

La clave del cron está en Configuration → Cron.

Crontab del servidor:

0 * * * * cd /path/to/drupal && drush cron

14. Contenido mixto SSL/HTTPS

Avisos de contenido no seguro después de activar SSL.

Solución

Forzar la URL base:

En settings.php:

$settings['trusted_host_patterns'] = [
  '^jouwsite\.nl$',
  '^www\.jouwsite\.nl$',
];
$base_url = 'https://example.nl';

Sustituir las URL antiguas en el contenido:

UPDATE node__body SET body_value = REPLACE(body_value, 'http://example.nl', 'https://example.nl');

15. Errores de memoria agotada

Mensaje de error "Allowed memory size exhausted".

Solución

Aumentar la memoria de PHP:

En settings.php:

ini_set('memory_limit', '512M');

En .htaccess:

php_value memory_limit 512M

Usar el procesamiento por lotes: Para operaciones grandes, usa la Batch API en lugar de hacerlo todo de una vez.

Comandos útiles de Drush

# Status overzicht
drush status

# Database backup
drush sql:dump > backup.sql

# Module status
drush pm:list

# Updates bekijken
drush pm:security

# Watchdog logs
drush watchdog:show --count=20

¿Necesitas ayuda?

¿No consigues resolverlo? Nuestro equipo de soporte está a tu disposición. Abre un ticket desde el área de cliente y normalmente te ayudamos en unas horas.

¿Buscas hosting Drupal? Consulta nuestra oferta.