Los 15 problemas más frecuentes de Drupal y sus soluciones
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:
- Exporta la configuración de la vista
- Elimina la vista
- 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é:
- Configuration → Performance
- Pon "Page cache maximum age" en una hora o más
- 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.
A 0 de 0 personas les ha resultado útil