En esta página: [esconder]
One stray character in wp-config.php, a missing semicolon or a deleted quote, and your entire WordPress site turns into a white screen. That same file is also where you fix slow admin pages, bloquear el editor de código del tablero, and switch on the log that tells you what actually broke. It’s the most powerful file in your install and the easiest one to wreck.
respuesta rapida: wp-config.php is the PHP file in your WordPress root folder that holds your database login, your security keys, and dozens of optional settings WordPress reads before the rest of the site loads. You’ll find it next to the wp-admin and wp-content folders. Edit it through your host’s File Manager or SFTP, use a plain text editor (never Word), and back it up before you touch a single line.

Última revisión: junio 2026. Settings verified against WordPress 7.0 and the official developer.wordpress.org documentation.
What wp-config.php Actually Does (and Where to Find It)
WordPress loads wp-config.php near the very start of every request, before most of the core code runs. The file’s job is to define a handful of PHP constants and one variable (the table prefix) that tell WordPress how to connect to its database and how to behave. No working wp-config.php means no site. Full stop.
You’ll find it in your WordPress root directory, the same folder that holds wp-admin, wp-includes, y wp-content. On most shared hosts that folder is called public_html or www. On a VPS it’s usually something like /var/www/html.
Fresh downloads of WordPress don’t ship with wp-config.php at all. They ship with wp-config-sample.php. The famous five-minute install copies that sample, fills in your database details, and saves the result as the real file. If you ever see wp-config-sample.php sitting in your root, that’s the template, not the live config. Editing it does nothing.
Here’s the part people miss: even on WordPress 7.0, this file works exactly the way it did a decade ago. The constants change and new ones get added, but the mechanism is the same plain-PHP setup. That’s why one outdated tutorial can still break a modern site. Muchos alojamiento WordPress gestionado platforms now lock, esconder, or partly auto-generate this file, so check your host’s rules before you go editing.
How to Edit wp-config.php Safely
Back up the file first. Siempre. Descargue una copia a su computadora antes de cambiar algo, entonces una mala edición es una restauración de 30 segundos en lugar de un pánico a medianoche. Esto importa aún más si estás en medio de un migración del sitio, donde los detalles de la base de datos ya están cambiando.
Tienes cuatro formas comunes de:
- Administrador de archivos (cPanel/panel anfitrión): Encuentra el archivo, haga clic derecho, elige Editar. Más fácil para principiantes, no se necesita software.
- SFTP o FTP: Conéctese con un cliente como FileZilla, descargar el archivo, editar localmente, subirlo de nuevo. Mejor cuando quieres una copia local de todos modos.
- WP-CLI: Correr
wp config set WP_DEBUG true --rawdesde la línea de comando. Rápido y a prueba de errores tipográficos una vez que esté configurado. - SSH con nano o vim: Editar directamente en el servidor. Para personas que viven en la terminal.
Dos reglas te mantendrán alejado de los problemas. Utilice un editor de código o un editor de texto sin formato (Código VS, Bloc, nano), nunca un procesador de textos. Word y Pages agregan caracteres de formato invisibles que convierten PHP válido en basura. Y poner nuevas lineas sobre el comentario que lee:
/* Eso es todo, dejar de editar! Feliz publicación. */
Cualquier cosa que pegue debajo de esa línea puede ser ignorada o, peor, romper el archivo. PHP también es exigente. Cada define() necesita sus citas, su coma, y un punto y coma de cierre. Si te pierdes uno, aparecerá la pantalla blanca de la muerte.. Entonces edite, ahorrar, luego recarga tu sitio en una nueva pestaña antes de cerrar el editor. si se carga, Estas bien.
wp-config.php Constants Cheat Sheet
Antes de la inmersión profunda, aquí está el mapa rápido: las constantes que realmente alcanzarás, con sus valores predeterminados donde existe. Cada uno recibe una explicación completa más abajo..
DB_NAME,DB_USER,DB_PASSWORD,DB_HOST: la conexión de la base de datos (necesario, sin valores predeterminados).$table_prefix: prefijo de tabla de base de datos (defectowp_).- los ocho
AUTH_KEYyAUTH_SALTlíneas: seguridad de cookies de inicio de sesión (sin valor predeterminado, tu los generas). WP_DEBUG,WP_DEBUG_LOG,WP_DEBUG_DISPLAY: registro de errores (todo apagado por defecto).WP_MEMORY_LIMIT: memoria PHP frontal (predeterminado 40M, 64M en multisitio).WP_POST_REVISIONS: historial de edición almacenado (predeterminado ilimitado).AUTOSAVE_INTERVAL: editor de espacios de autoguardado (defecto 60 segundos).EMPTY_TRASH_DAYS: retención de basura (defecto 30 dias).DISABLE_WP_CRON: desactivar el programador activado por visitantes (defecto: el programador se ejecuta).DISALLOW_FILE_EDIT: matar el editor de código del tablero (defecto: edición permitida).FORCE_SSL_ADMIN: forzar HTTPS al iniciar sesión y administrar (predeterminado desactivado).FS_METHOD: cómo WordPress escribe archivos (defecto: detectado automáticamente).WP_AUTO_UPDATE_CORE: política principal de actualización automática (defectominor).WP_ENVIRONMENT_TYPE: etiqueta del sitio, local / desarrollo / puesta en escena / producción (defectoproduction).WP_HOME,WP_SITEURL: dirección del sitio codificada (sin valor predeterminado, leer de la base de datos).
The Required Settings: Database Credentials
Cuatro valores no negociables. Sin ellos, WordPress no puede acceder a su base de datos., y verás el temido “Error al establecer una conexión de base de datos” mensaje en lugar de tu página de inicio.
definir( 'DB_NAME', 'tu_nombre_base_de_datos' ); definir( 'DB_USER', 'tu_usuario_base_de_datos' ); definir( 'DB_PASSWORD', 'tu_contraseña_fuerte' ); definir( 'DB_HOST', 'host local' );
DB_HOST es localhost en la mayoría de hosting compartido, pero muchos hosts utilizan un servidor de base de datos dedicado con una dirección diferente o un puerto no estándar (escrito como hostname:3307). Cuando falla una conexión y su nombre de usuario y contraseña son correctos, el valor del host es el culpable habitual. Consulte la documentación de su host para conocer la cadena exacta.
Dos líneas más de base de datos lo completan. DB_CHARSET está configurado para utf8mb4 en instalaciones actuales, el conjunto de caracteres que admite emoji y la gama completa de idiomas del mundo. DB_COLLATE permanece vacío en casi todos los casos, que permite a MySQL elegir las reglas de clasificación correctas automáticamente.
Luego está el prefijo de la tabla., que no es una constante sino una variable:
$prefijo_tabla = 'wp_';
El valor predeterminado es wp_. Algunas guías de seguridad le indican que lo cambie a algo aleatorio para evitar ataques automatizados de inyección SQL.. Honestamente, la protección es escasa contra cualquier atacante que ya esté en su base de datos, y cambiarlo en un sitio en vivo significa cambiar el nombre de las tablas y actualizar dos valores serializados a mano. Establezca un prefijo personalizado en el momento de la instalación si lo desea. No se moleste en reescribirlo en un sitio en ejecución solo para teatro de seguridad..
Security Keys and Salts
Debajo del bloque de la base de datos se encuentra una pared de largas cadenas aleatorias.: ocho de ellos, cuatro “llaves” y cuatro “sales.”
definir( 'AUTH_KEY', 'cadena-aleatoria-larga-aquí' ); definir( 'SECURE_AUTH_KEY', 'cadena-aleatoria-larga-aquí' ); definir( 'LOGGED_IN_KEY', 'cadena-aleatoria-larga-aquí' ); definir( 'NONCE_KEY', 'cadena-aleatoria-larga-aquí' ); definir( 'AUTH_SALT', 'cadena-aleatoria-larga-aquí' ); definir( 'SECURE_AUTH_SALT', 'cadena-aleatoria-larga-aquí' ); definir( 'LOGGED_IN_SALT', 'cadena-aleatoria-larga-aquí' ); definir( 'NONCE_SALT', 'cadena-aleatoria-larga-aquí' );
Estos codifican las cookies de inicio de sesión y los tokens de sesión que WordPress almacena en su navegador.. Con fuerte, valores únicos, una galleta robada es mucho más difícil de falsificar. Nunca escribes estas claves y nunca necesitas recordarlas. Solo necesitan ser largos, aleatorio, y diferente en cada sitio.
WordPress ejecuta un generador gratuito exactamente para esto. Visita https://api.wordpress.org/secret-key/1.1/salt/ en su navegador y devuelve ocho líneas nuevas. Cópialos directamente sobre el bloque antiguo.. Hecho.
Aquí está el truco realmente útil: cambiando estos valores cierra la sesión de todos los usuarios al instante, including any attacker riding a hijacked session. After a suspected breach, password resets alone won’t kick an intruder whose cookie is still valid. Rotating the salts will. It’s the fastest “log everyone out everywhere” button WordPress has.
Debug Mode: Turning On the Error Log
When something breaks and you’ve no idea why, wp-config.php holds the flashlight. The main switch is WP_DEBUG, off by default:
definir( 'WP_DEBUG', cierto );
On its own, that splashes PHP errors across your live pages, which looks alarming to visitors and leaks server paths to anyone watching. So you almost never use it alone. The safe live-site recipe sends errors to a private file instead of the screen:
definir( 'WP_DEBUG', cierto ); definir( 'WP_DEBUG_LOG', cierto ); definir( 'WP_DEBUG_DISPLAY', falso );
With this set, errors quietly pile up in /wp-content/debug.log, the default location. Your visitors see nothing. You read the log over SFTP, find the plugin or theme throwing warnings, arreglalo, then switch all three back to false. Una bandera más, SCRIPT_DEBUG, forces WordPress to load the full unminified versions of its core CSS and JavaScript, which helps when you’re chasing a front-end glitch.
Can you point the log somewhere outside the public folder? si. Pass a full path instead of true, por ejemplo define( 'WP_DEBUG_LOG', '/home/you/logs/wp-errors.log' );. That keeps the log off the web entirely, which is the safer choice on any site that handles real traffic.
Performance and Content Settings
This is where wp-config.php stops being plumbing and starts buying you speed and sanity. None of these lines exist by default. You add the ones you need.
definir( 'WP_MEMORY_LIMIT', '256M' ); definir( 'WP_MAX_MEMORY_LIMIT', '512M' ); definir( 'WP_POST_REVISIONS', 5 ); definir( 'AUTOSAVE_INTERVAL', 120 ); definir( 'EMPTY_TRASH_DAYS', 7 ); definir( 'DISABLE_WP_CRON', cierto );
WP_MEMORY_LIMIT caps how much memory the front end can use. WordPress defaults to 40M for single sites y 64M for multisite, which heavy plugins blow through fast. Subirlo a 256M es común. WP_MAX_MEMORY_LIMIT cubre tareas exclusivas de administrador, como el procesamiento de imágenes, y el valor predeterminado es 256 M. Si sigues teniendo errores de memoria sin importar lo que configures aquí, tu anfitrión es el techo, y ese es el momento de sopesar pasar del alojamiento compartido a un VPS con recursos reales.
La configuración de contenido controla la inflación de la base de datos.. WP_POST_REVISIONS por defecto es true, lo que significa que WordPress almacena copias ilimitadas de cada edición. En un blog ocupado que silenciosamente triplica tu tabla de publicaciones. Tapandolo en 5 mantiene un útil historial de deshacer sin excesos. AUTOSAVE_INTERVAL por defecto es 60 segundos; duplicándolo a 120 facilita la carga en un servidor lento. Y EMPTY_TRASH_DAYS por defecto es 30, Así que las publicaciones basura permanecen durante un mes a menos que las acortes..
Quiere eliminar por completo las revisiones en un sitio que nunca las necesita? Colocar define( 'WP_POST_REVISIONS', false );. Sólo recuerda que pierdes la red de seguridad de retroceso cuando lo haces..
Esa última línea en el bloque, DISABLE_WP_CRON, es la solución de velocidad para dormir. De forma predeterminada, WordPress ejecuta sus tareas programadas. (publicando publicaciones, podando basura, comprobando actualizaciones) en un pseudo-cron que se activa cada vez que alguien carga una página. En un sitio ocupado se dispara con demasiada frecuencia; en uno tranquilo, Las publicaciones programadas pueden publicarse tarde porque no apareció ningún visitante.. Establecerlo en verdadero evita que, pero solo hazlo si agregas un trabajo cron de servidor real que llegue a wp-cron.php en un horario fijo. Omita ese paso y sus publicaciones programadas simplemente dejarán de publicarse. Una bandera relacionada: complementos de almacenamiento en caché como WP Rocket o W3 Total Cache set WP_CACHE a verdadero automáticamente, por lo que rara vez lo agregas a mano.
Security Hardening Through wp-config.php
Unas breves líneas cierran algunas de las puertas de ataque más comunes en WordPress. Comience con el editor de código del panel, which lets anyone with admin access rewrite your theme and plugin PHP straight from the browser. One compromised login and an attacker owns your files. Shut it off:
definir( 'DISALLOW_FILE_EDIT', cierto );
Want to go further on a locked-down site? DISALLOW_FILE_MODS blocks all plugin and theme installs, actualizaciones, and deletions from the dashboard. It’s heavy-handed, so reserve it for sites where changes only ever happen through deployment, not the admin panel.
próximo, force every login and admin page over HTTPS so passwords and cookies never travel in plain text:
definir( 'FORCE_SSL_ADMIN', cierto );
Two more moves happen outside the file’s contents. primero, you can relocate wp-config.php one directory above your WordPress root. WordPress checks the parent folder automatically, and the file then sits outside the public web path, por lo que una mala configuración del servidor nunca podrá servirlo como texto sin formato. Segundo, reforzar los permisos de archivos. lo habitual 644 permite que otros usuarios en un servidor compartido lean su archivo; configúrelo en 600 o 440 entonces solo el dueño puede. También puede agregar una regla .htaccess que rechace todas las solicitudes web del archivo.. Prefieres no gestionar nada de esto tú mismo.? Bueno alojamiento WordPress gestionado maneja los permisos de archivos, SSL, y endurecimiento a nivel de servidor para usted.
Environment and Modern Constants
Las versiones más nuevas de WordPress agregaron constantes que los tutoriales más antiguos omiten, y vale la pena conocerlos en 2026.
WP_ENVIRONMENT_TYPE etiqueta qué tipo de sitio es este. Acepta cuatro valores.: local, development, staging, y production (el valor predeterminado). Los complementos lo leen para comportarse de manera diferente según el entorno.. Un efecto secundario útil: cuando lo configuras en development, WordPress activa WP_DEBUG automáticamente.
definir( 'WP_ENVIRONMENT_TYPE', 'puesta en escena' );
Agregado en WordPress 6.3, WP_DEVELOPMENT_MODE es un interruptor diferente para trabajos de construcción activos. Se necesita core, plugin, theme, all, o una cadena vacía (el valor predeterminado). Los creadores de temas utilizan el theme valor por lo que cambia a theme.json aparecer instantáneamente sin vaciar el caché. Déjalo vacío en cualquier sitio activo.; deshabilita los cachés que desea ejecutar en producción.
Dos veteranos constantes aún se ganan su lugar. WP_INICIO y WP_SITEURL codifica la dirección de tu sitio. Configurarlos corrige los bucles de redireccionamiento después de un cambio de dominio y omite una búsqueda en la base de datos en cada página., una pequeña victoria de velocidad. Son lo primero que se debe configurar cuando una migración deja su sitio apuntando a la URL incorrecta.:
definir( 'WP_HOME', 'https://ejemplo.com' ); definir( 'WP_SITEURL', 'https://ejemplo.com' );
Una última nota sobre las actualizaciones: WP_AUTO_UPDATE_CORE por defecto es 'minor', por lo que su sitio instala automáticamente las versiones de seguridad y mantenimiento, pero lo espera en los grandes saltos de versión.. Ese valor predeterminado es sensato para la mayoría de las personas.. Configúrelo en true para actualizaciones automáticas completas o false para manejar todo usted mismo.
Common wp-config.php Mistakes (and Fast Fixes)
Most wp-config.php disasters trace back to five errors. Recognize them and you’ll fix in minutes what otherwise costs hours.
White screen right after saving. You broke the PHP syntax: a missing quote, comma, or semicolon, or you pasted code below the “dejar de editar” línea. Restore your backup, or fix the exact line. This is why you copied the file first.
“Error establishing a database connection.” One of your four database values is wrong, or the database server is down. Re-check DB_HOST first (it’s the sneakiest), then the username and password against what your host shows in its panel.
Edits do nothing. You’re editing wp-config-sample.php instead of the live wp-config.php, or a caching layer is serving an old page. Confirm the filename, then clear your cache.
Changes vanish after an update. You added lines below the stop-editing comment, and WordPress ignored them. Mueva sus definiciones personalizadas encima de esa línea y se mantendrán.
WordPress solicita credenciales FTP. Hace esto en cada actualización porque el servidor no puede escribir archivos directamente, entonces WordPress vuelve a suplicar por una conexión. Añadir define( 'FS_METHOD', 'direct' ); para dejar que escriba directamente en el disco. Si eso arroja errores de permiso en su lugar, la verdadera solución es corregir la propiedad del archivo en el servidor, no esta línea.
Preguntas frecuentes
Where is the wp-config.php file located?
En su directorio raíz de WordPress, la misma carpeta que contiene el wp-admin, wp-incluye, y carpetas de contenido wp. En alojamiento compartido, esa carpeta generalmente se llama public_html o www.. En un VPS normalmente es /var/www/html. Acceda a él a través del Administrador de archivos de su host o un cliente SFTP.
Is it safe to edit wp-config.php?
si, siempre que primero haga una copia de seguridad del archivo y utilice un editor de texto o código sin formato, no es un procesador de textos. The risk isn’t the file itself, it’s a typo in the PHP, which produces a white screen. Save your edit, reload the site in a new tab to confirm it works, and keep the backup until you’re sure.
What happens if I delete wp-config.php?
Your site stops loading and WordPress redirects to the setup screen, since it can’t find the database credentials. Your content is safe because it lives in the database, not the file. Restore your backup or rebuild the file from wp-config-sample.php with your database details, and the site returns.
How do I fix “Error al establecer una conexión de base de datos” through wp-config.php?
Open the file and check the four database values. DB_HOST is wrong most often, so verify it against your host’s panel (it isn’t always “localhost”). Then confirm DB_NAME, DB_USER, and DB_PASSWORD match your actual database. If all four are right, el servidor de la base de datos puede estar inactivo, que es un problema de acogida.
How do I change the WordPress salts, and why would I?
Generar un conjunto nuevo en https://api.wordpress.org/secret-key/1.1/salt/ y péguelos sobre las ocho líneas clave y salt existentes. La razón principal para hacerlo.: cambiarlos cierra la sesión de todos los usuarios conectados al instante. Esta es la forma más rápida de expulsar a un atacante de un sitio comprometido, más rápido que restablecer la contraseña por sí solo.
Does editing wp-config.php log users out?
Solo si cambias las claves de autenticación o sales. Esos ocho valores firman las cookies de inicio de sesión., por lo que reemplazarlos invalida todas las sesiones activas a la vez. Editar otras configuraciones, como límites de memoria o indicadores de depuración, deja en paz a los usuarios que han iniciado sesión.
Should I move wp-config.php out of the root folder?
Es una capa extra razonable. WordPress comprueba automáticamente un directorio encima de la raíz, por lo que mover el archivo allí lo mantiene completamente fuera de la ruta web pública. Para la mayoría de los sitios, permisos de archivos correctos (600 o 440) plus an .htaccess deny rule give you nearly the same protection with less fuss.
Can I turn my site into a multisite network from wp-config.php?
si. agregando define( 'WP_ALLOW_MULTISITE', true ); unlocks a Network Setup screen under Tools in your dashboard. That’s only step one: WordPress then hands you a second block of constants (me gusta MULTISITE y SUBDOMAIN_INSTALL) to paste in, plus new .htaccess rules. Back up first, because converting to multisite is hard to cleanly undo.
Qué hacer a continuación
Open your wp-config.php right now and do three quick checks. Confirm your salts aren’t still the install defaults. Añadir DISALLOW_FILE_EDIT if it’s missing. And make sure the file permission is 600 o 440, no 644. Those three take five minutes and close real gaps.
If you find yourself raising WP_MEMORY_LIMIT again and again and still hitting walls, the file isn’t your problem, your plan is. That’s the signal to step up from a cramped starter plan to something with real headroom. Recién comenzando y probando en un sitio desechable? UNA alojamiento gratuito de WordPress te permite practicar estas ediciones sin nada real en juego. Domine este archivo y tendrá control sobre las partes de WordPress que la mayoría de los usuarios nunca tocan.
