Tutorial completo para solucionar el problema de WordPress Wordfence que impide la creación del archivo wordfence-waf.php.

Alguien comentó que, tras instalar Wordfence en su sitio web, seguía recibiendo errores que indicaban que no se podía crear el archivo wordfence-waf.php en el directorio raíz. Le pedí que me enviara una captura de pantalla; el mensaje de error era de una sola línea y decía que se trataba de un problema de permisos de archivo.

Lo pensé un momento y me di cuenta de que ya me había encontrado con este problema. Pasé muchísimo tiempo intentando resolverlo, casi pensando que el proveedor de alojamiento tramaba algo. Resultó ser un problema de permisos y propiedad, pero la lógica del panel de control del alojamiento puede ser realmente confusa.

Tutorial completo para solucionar el problema de WordPress Wordfence que impide la creación del archivo wordfence-waf.php.

Permítanme primero aclarar qué es este archivo wordfence-waf.php.

En realidad, se trata del archivo de protección del cortafuegos Wordfence, que debe estar escrito en el directorio raíz del sitio web, al mismo nivel que wp-config.php.

Sin este archivo, el cortafuegos no puede iniciarse; es como si hubieras instalado un candado pero no pudieras insertar la llave.

Opción 1: Modificación de permisos con un solo clic a través del panel de control (Panel BT/)hestiacp/cPanel)

Si utilizas BT Panel, es muy sencillo. Ve a tu sitio web, localiza la sección correspondiente, haz clic en Configuración y luego en Permisos de directorio. Cambia los permisos del directorio raíz del sitio web a 755 y los de todos los archivos a 644. Comprueba si el usuario que ejecuta el proceso es "www"; si no lo es, cámbialo. Haz clic en el botón "Reparar permisos", espera a que finalice el proceso, actualiza Wordfence e inténtalo de nuevo.

Para HestiaCP, ve a la página de edición del sitio web y habilita la opción "Permitir acceso de escritura a la raíz web". Luego, ejecuta algunos comandos SSH para unificar el propietario y los permisos del directorio del sitio web.

chown -R admin:www-data /home/admin/web/你的域名/public_html
chmod -R 755 /home/admin/web/你的域名/public_html
find /home/admin/web/你的域名/public_html -type f -print0 | xargs -0 chmod 644

cPanel es más intuitivo. Abra el administrador de archivos, active la opción "Mostrar archivos ocultos" en la esquina superior derecha, haga clic con el botón derecho en el directorio y cambie los permisos a 755, cambie los permisos del archivo a 644, y también hay una función para corregir el propietario del archivo en las opciones avanzadas.

Opción 2: Cambiar manualmente los permisos a través de SSH (general)Linux)

Si el panel de control no puede manejarlo, intente SSH manualmente. Una vez conectado al servidor, unifique primero la propiedad. En un entorno LNMP/LEMP, el grupo de tiempo de ejecución web suele ser www-data o www.

chown -R 你的面板用户:www-data /网站根目录完全路径

A continuación, configure los permisos de la carpeta en 755 y los permisos de los archivos en 644.

find /网站根目录 -type d -print0 | xargs -0 chmod 755
find /网站根目录 -type f -print0 | xargs -0 chmod 644

Una vez finalizado el proceso, vuelva al panel de administración de WP y vuelva a habilitar el cortafuegos; lo más probable es que esto solucione el problema.

Opción 3: Crear manualmente wordfence-waf.php (una solución infalible cuando los permisos están bloqueados).

Si no puedes cambiar la configuración SSH en el panel de control, hazlo manualmente. Crea un archivo llamado wordfence-waf.php en el directorio raíz y pega el siguiente código en él.

<?php
if (!defined('WFWAF_VERSION')) {
    define('WFWAF_VERSION', '7.11.0');
}
$wafConfig = array(
    'wafAutoPrepend' => true,
    'wafFile' => __FILE__,
    'wpContentDir' => dirname(__FILE__) . '/wp-content',
    'wpPluginsDir' => dirname(__FILE__) . '/wp-content/plugins',
    'wafLogDir' => dirname(__FILE__) . '/wp-content/wflogs',
);
require_once $wafConfig['wpPluginsDir'] . '/wordfence/lib/waf/waf.php';

Recuerda reemplazar la versión 7.11.0 con tu versión actual de Wordfence. Establece los permisos de archivo a 644 y el propietario debe coincidir con el sitio web. Luego, edita wp-config.php y agrega la siguiente línea al principio del archivo.

require_once 'wordfence-waf.php';

Guarda y actualiza Wordfence. El cortafuegos lo reconocerá automáticamente y dejará de mostrar errores.

Opción 4: Compruebe las reglas que restringen el acceso de escritura.

A veces, el problema no son los permisos, sino el archivo de configuración. Abre tu archivo .htaccess y elimina todas las reglas que restrinjan la escritura de archivos o impidan la creación de archivos PHP. En el caso de Nginx, revisa la configuración de tu sitio para detectar restricciones como la ruta raíz en modo de solo lectura o la opción create_file desactivada, y elimínalas.

Otro escenario posible es que el propio servidor virtual o el alojamiento en la nube ligero restrinja la generación de archivos PHP en el directorio raíz. En este caso, debe ponerse en contacto con su proveedor de alojamiento para eliminar la restricción o cambiar el modo de protección de Wordfence. Vaya al menú de Wordfence, a Todas las opciones, WAF y cambie el modo del motor de protección a Protección extendida para evitar la creación de archivos en el directorio raíz.

Solución 5: Conflictos de complementos que provocan bloqueos

Es posible que algunos plugins de caché o seguridad bloqueen esta operación. Desactive temporalmente plugins de caché como WP Rocket, W3 Total Cache y LiteSpeed ​​Cache, así como plugins de seguridad como Sucuri e iThemes Security. A continuación, borre la caché del servidor y opcache, y reinicie el servicio PHP.

systemctl restart php8.3-fpm

Secuencia rápida para la resolución de problemas (se recomienda seguir los pasos en orden).

Te sugiero que sigas este orden para evitar complicaciones. Primero, unifica los permisos y la propiedad; esto tiene la mayor probabilidad de solucionar el problema. Si no funciona, reinicia PHP-FPM y actualiza el panel de administración. Si aún así no funciona, crea manualmente un nuevo archivo y modifica wp-config. Luego, verifica si tu configuración de Nginx o Apache está bloqueando la creación de nuevos archivos PHP en el directorio raíz. Finalmente, considera cambiar los modos del firewall.

Es importante recordarles que nunca deben establecer permisos 777. Los permisos de carpeta deben ser 755 y los de archivo 644; ese es el estándar. Establecer permisos 777 expone directamente su sitio web, lo que representa un riesgo de seguridad extremadamente alto. Si sufren un ataque informático, será demasiado tarde para arrepentirse.

Sinceramente, no estoy seguro de que estas soluciones te sirvan, pero te he compartido los problemas que encontré y los métodos que descubrí. Si recibes algún otro mensaje de error, hazme una captura de pantalla y envíamela para que pueda revisarla.

Ya que has leído hasta aquí, si te ha resultado útil, dale a "Me gusta" y compártelo. Si quieres ser el primero en recibir las novedades, ¡también puedes seguirme!

Gracias por leer mi artículo. ¡Hasta la próxima!

发表 评论

Su dirección de correo electrónico no será publicada. 项 已 用 * 标注

Ir al Inicio